my @values = qw(Stuff you want to pass in); print "Some question\n"; chomp(my $file = <>); if ($file eq 'A') { do_A($file, @values); } elsif ($file eq 'B') { do_B($file, @values); } elsif ... { } else { complain_that_value_sucks($file, @values); } #### my %dispatch_table = ( A => \&do_A, B => \&do_B, C => \&do_C, ); my @values = qw(Stuff you want to pass in); print "Some question\n"; chomp(my $file = <>); my $sub = $dispatch_table{$file} || \&complain_that_value_sucks; $sub->($file, @values);