my %dispatch = ( sub_get_files => sub{ # takes one arg local *DH; opendir( DH, $_[0] ) or die 'Cannot open ' . $_[0]; return grep { -f $_ } readdir(DH) }, ); my @files = $dispatch{sub_get_files}->( $dir );