This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Quote one-liner in exec.t on VMS.
authorCraig A. Berry <craigberry@mac.com>
Mon, 1 Jan 2018 21:48:36 +0000 (15:48 -0600)
committerCraig A. Berry <craigberry@mac.com>
Mon, 1 Jan 2018 21:51:16 +0000 (15:51 -0600)
On VMS, system() sends a complete command to the CLI rather than
passing arguments via exec.  So arguments need to be quoted if
they have anything the shell doesn't like or contain spaces.

t/op/exec.t

index ccb640f..948b175 100644 (file)
@@ -198,11 +198,15 @@ package CountRead {
 }
 my $cr;
 tie $cr, "CountRead";
-is system($^X, "-e", "exit(\$ARGV[0] eq '1' ? 0 : 1)", $cr), 0,
+my $exit_statement = "exit(\$ARGV[0] eq '1' ? 0 : 1)";
+$exit_statement = qq/"$exit_statement"/ if $^O eq 'VMS';
+is system($^X, "-e", $exit_statement, $cr), 0,
     "system args have magic processed exactly once";
 is tied($cr)->{n}, 1, "system args have magic processed before fork";
 
-is system($^X, "-e", "exit(\$ARGV[0] eq \$ARGV[1] ? 0 : 1)", "$$", $$), 0,
+$exit_statement = "exit(\$ARGV[0] eq \$ARGV[1] ? 0 : 1)";
+$exit_statement = qq/"$exit_statement"/ if $^O eq 'VMS';
+is system($^X, "-e", $exit_statement, "$$", $$), 0,
     "system args have magic processed before fork";
 
 my $test = curr_test();