sub inefficient_qx { my $cmd=shift; local *PIPE; open PIPE,"$cmd |" or die "Could not open pipe from $cmd"; # ^-- intentionally written using an old-style bareword handle for ancient perls if (wantarray) { my @tmp=; close PIPE or die "Close pipe failed: $!"; return @tmp; } else { my $tmp=do { local $/= }; close PIPE or die "Close pipe failed: $!"; return $tmp; } } #### > perl -E 'open my $pipe,"-|","pstree --ascii --arguments --long $$ 1>&2" or die $!;' perl -E open my $pipe,"-|","pstree --ascii --arguments --long $$ 1>&2" or die $!; `-sh -c pstree --ascii --arguments --long 22176 1>&2 `-pstree --ascii --arguments --long 22176 > #### > perl -E 'open my $pipe,"-|","pstree --ascii --arguments --long $$ 1>&2","dummy" or die $!;' No such file or directory at -e line 1. > #### > perl -E 'system("pstree --ascii --arguments --long $$ 1>&2")==0 or die $!' perl -E system("pstree --ascii --arguments --long $$ 1>&2")==0 or die $! `-sh -c pstree --ascii --arguments --long 20620 1>&2 `-pstree --ascii --arguments --long 20620 > perl -E 'system("pstree --ascii --arguments --long $$ 1>&2","dummy")' alex@enterprise pts/0 16:09:53 /home/alex>perl -E 'system("pstree --ascii --arguments --long $$ 1>&2","dummy")==0 or die $!' No such file or directory at -e line 1. > perl -E 'exec("pstree --ascii --arguments --long $$ 1>&2") or die $!' sh -c pstree --ascii --arguments --long 20657 1>&2 `-pstree --ascii --arguments --long 20657 > perl -E 'exec("pstree --ascii --arguments --long $$ 1>&2","dummy") or die $!' No such file or directory at -e line 1. > #### > perl -E '@list=("pstree --ascii --arguments --long $$ 1>&2"); system { $list[0] } @list and die $!' No such file or directory at -e line 1. > perl -E '@list=("pstree --ascii --arguments --long $$ 1>&2"); exec { $list[0] } @list or die $!' No such file or directory at -e line 1. >