http://www.perlmonks.org?node_id=887244

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

so exec always invokes the shell?
#!/usr/bin/perl -- use strict; use warnings; my $perl = 'perl'; # $^X; my @args ; if( @ARGV ){ # no output from exec/systemx @args = ( qw! -l -e !, q!print for @ARGV!, "1 2" ); } else { # output from exec/systemx, but on 2 lines, wrong output @args = ( qw! -l -e !, q!"print for @ARGV"!, '--',"1 2" ); } warn "$perl @args \n"; warn 'system '; system $perl, @args; { use IPC::System::Simple qw' systemx '; warn 'systemx '; systemx $perl, @args; } warn 'exec '; exec $perl, @args; # bug warn " $! $^E "; __END__
$ perl junk.pl 1 perl -l -e print for @ARGV 1 2 system at junk.pl line 24. 1 2 systemx at junk.pl line 29. exec at junk.pl line 33. $
$ perl junk.pl perl -l -e "print for @ARGV" -- 1 2 system at junk.pl line 24. 1 2 systemx at junk.pl line 29. 1 2 exec at junk.pl line 33. $ 1 2
Huuuh?