#!/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__