Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Weird use warnings FATAL behavior

by naikonta (Curate)
on Mar 18, 2008 at 09:19 UTC ( #674749=note: print w/replies, xml ) Need Help??

in reply to Weird use warnings FATAL behavior

OK, here is the expanded version of the original OP's oneliner, following tye's explanation:
cat #!/usr/bin/perl use strict; use warnings FATAL => 'all'; my $cmd = shift || '_bad_exe_ a b c'; print "I'm parent with id $$\n"; eval { my $pid = open CMD, "-|"; if ($pid) { print "I'm forking a child with id $pid\n"; print while <CMD>; } else { #no warnings; # get rid of warnings on "Can't exec:..." print "[$$] I'm child, about to exec [$cmd]\n"; exec $cmd; } }; die "[$$] ERROR: $@" if $@; print "[$$]HOW DID I GET HERE?\n";
Run with correct command (just as comparisson):
$ perl ls I'm parent with id 6238 I'm forking a child with id 6239 [6239] I'm child, about to exec [ls]
No problem there. Now, run with no args (default command):
$ perl I'm parent with id 6240 [6241] ERROR: Can't exec "_bad_exe_": No such file or directory at fat line 18. I'm forking a child with id 6241 [6241] I'm child, about to exec [_bad_exe_ a b c] [6240]HOW DID I GET HERE?
So I guess, it's the child that triggers the "Can't exec ..." warning that gets "upgraded" into fatal error (due to FATAL), trapped in $@, and dies. The child dies, the parent doesn't, that's HOW DID I GET HERE, I suppose. OTOH, if the no warnings; is uncommented, then well, no "Can't exec..." warning, no $@ trapping, and the child lives pretending nothing happens, yet covering up by asking HOW DID I GET HERE.

Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!

Replies are listed 'Best First'.
Re^2: Weird use warnings FATAL behavior
by hsola (Initiate) on Mar 18, 2008 at 15:38 UTC
    Ok, so the version with explicit forking shows what is happenng better. This was my example (jneil just posted it for me). So there is no perl bug?

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://674749]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2023-03-26 09:26 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (63 votes). Check out past polls.