use strict; my %systemcmd = ( add => "addqueue -h P0 -q P1 -i 3", remove => "removequeue -f -q P0", status => "lpstat -pP0", cancel => "cancel -e P0", add_slurp => "addqueue -h P0 -q P1 -i 3" ); my $file = <) { chomp; next unless length; my ($command, @params) = split; unless (exists $systemcmd{$command}) { warn "Unrecognised command: $command in line $.\n"; next; } my $cmdline = $systemcmd{$command}; $cmdline =~ s/(P$_)/$params[$_]/e for 0 .. $#params; print qq{system ("$cmdline");\n}; } close INFILE; #### system ("addqueue -h wibble -q ping -i 3"); Unrecognised command: flibble in line 4 system ("cancel -e wobble");