Deparse: handle system/exec prog arg,arg,,..
authorDavid Mitchell <davem@iabyn.com>
Tue, 9 Oct 2012 16:12:09 +0000 (17:12 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 10 Oct 2012 15:39:21 +0000 (16:39 +0100)
Deparse wasn't handling the form of system and exec where
the extra first arg (without comma) gave the program name.

These now deparse ok, without an additional comma:

    system $prog $arg1,$arg2;
    exec   $prog $arg1,$arg2;

dist/B-Deparse/Deparse.pm

index 88cce1f..612676b 100644 (file)
@@ -2568,6 +2568,15 @@ sub listop {
        return "$exprs[0] = $fullname"
                 . ($parens ? "($exprs[0])" : " $exprs[0]");
     }
+    if ($name =~ /^(system|exec)$/
+       && ($op->flags & OPf_STACKED)
+       && @exprs > 1)
+    {
+       # handle the "system prog a1,a2,.." form
+       my $prog = shift @exprs;
+       $exprs[0] = "$prog $exprs[0]";
+    }
+
     if ($parens && $nollafr) {
        return "($fullname " . join(", ", @exprs) . ")";
     } elsif ($parens) {