my %subs = ( PR1 = \&process1, PR2 = \&process2, PR3 = \&process3, PR4 = \&process4, ); #### my @processes; foreach (sort { $po{$a} <=> $po{b} } keys %po) { push @processes, $_; } #### foreach (sort { $po{$a} <=> $po{b} } keys %po) { push @processes, $subs{$_}; } #### foreach (@processes) { $input = $_->($input); }