Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Weird use warnings FATAL behavior

by naikonta (Curate)
on Mar 18, 2008 at 09:19 UTC ( [id://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 fatals.pl #!/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 fatals.pl ls I'm parent with id 6238 I'm forking a child with id 6239 [6239] I'm child, about to exec [ls] 642663.pl 642676.pl 642682.pl 644761.pl
No problem there. Now, run with no args (default command):
$ perl fatals.pl I'm parent with id 6240 [6241] ERROR: Can't exec "_bad_exe_": No such file or directory at fat +als.pl 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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (7)
As of 2024-04-19 11:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found