my %arg_used; $argstr =~ s/(%(\d))/ $arg_used{$2-1}=1; defined($args[$2-1]) ? $args[$2-1] : "" /eg; $cmdline .= " $argstr"; for my $i (0 .. $#args) { if (!$arg_used{$i}) { $cmdline .= " $args[$i]"; } }