sub do_funky_tag_thing { my ($text1, $text2) = @_; # Build the command-line args from the web-service # args. Some funky logic here.. my %args; $args{'-opt1'} = $text1 if defined $text1; if (defined $text1 and defined $text2) { $args{'-opt2'} = process_text($text2); } # Log the command to L4P for audit purposes. my $external_command = 'tag '; for my $opt (keys %args) { $external_command .= $opt.' '.shell_escape($args{$opt)) } get_logger->info( "Running external command: $external_command"; ); # Now run the actual command.. with no reliance on # shell_escape() system('tag',%args); }