exit: zahada

Jiri Polcar polcar na physics.muni.cz
Čtvrtek Leden 30 17:49:08 MET 2003


Jiste ze se vola, prece nasleduje tesne za 

    print STDERR "$0: ERROR: Cannot run: $co\n";

ktery se obevi na vystupu.

Mezitim jsem prisel na to, ze problem je v kombinaci 'eval' vs. 'system',
jakmile se jako argument evalu pouzije neco, co perl neschroustne,
napr:

        eval 'hohoho';

tak se exit() chova mravne a skript zkonci.


On Thu, Jan 30, 2003 at 05:44:40PM +0100, Honza Pazdziora wrote:
> On Thu, Jan 30, 2003 at 05:04:22PM +0100, Jiri Polcar wrote:
> >     Zdravim,
> > 
> > prave jsem se potkal ze zahadou. Spript vesele pokracuje i po volani fce
> > exit():
> > 
> > ---cite---
> > #!/usr/bin/perl -w
> > 
> > if ( doCommand ('eeeecho pepa') ) {
> >   print "Podminka splnena\n";
> > } else {
> >   print "Podminka NEsplnena\n";
> > }
> 
> [...]
> 
> > sub doCommand {
> >   my ( $co ) = @_;
> > 
> >   {
> >     local $SIG{__WARN__} = sub { die @_ };
> >     eval { system $co };
> >   }
> > 
> >   if ( $@ ) {
> >     print STDERR "$0: ERROR: Cannot run: $co\n";
> >     exit 1;
> >   }
> > 
> >   print "OK\n";
> > 
> >   return 1;
> > }
> > ---cite---
> > 
> > predpokladam, ze neco co by se dalo pustit se nejmenuje 'eeeecho'. Zde
> > posilam jeste vystup:
> > 
> > 
> > ---cite---
> > ./t41.pl: ERROR: Cannot run: eeeecho pepa
> > OK
> > Podminka splnena
> > KONEC
> > ---cite---
> > 
> > Muze me nekdo vysvetlit, tak to, ze fce exit() neukonci beh skriptu?
> 
> Protoze se nevola. Co Vas vede k presvedceni, ze ten system selze? Ten
> system se vrati s uspechem.
> 
> -- 
> ------------------------------------------------------------------------
>  Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
>       ... all of these signs saying sorry but we're closed ...
> ------------------------------------------------------------------------

-- 
JP


Další informace o konferenci Perl