my @dispatch = [ [ '\.vms', sub { my $fnam = shift; $fnam =~ s/\///g; return $fnam; } ] # ,[] ... ]; for ( my $v=0; $v <= $#view; $v++ ) { REGEXP: for ( my $d=0; $d <= $#dispatch; $d++ ) { if ( $view[$v] =~ /$dispatch[ $d ][0]/ ) { $view[$v]=&{$dispatch[$d][1]} ($view[$v]); last REGEXP; } } }