my %run = (x => \&system, X => \&myrun); my ($run, @args); foreach(@ARGV){ if (/^-([xX])$/){ $run = $run{$1} }elsif (/^-/){ push @args, $_ } $run->(@args)