Key Value PR1 2 PR2 4 PR3 1 PR4 3 #### $input = &process1 ($input) $input = &process2 ($input) $input = &process3 ($input) $input = &process4 ($input) #### The way i tried one way (here i have changed subroutine name as per the key in the hash, which i don't want): for (sort keys %po) { $input = &$_ ($input); } #### The second way i tried but not correct (just i gave a try): for (keys %po) { $input = &process1 ($input) if (po{$_} == 1); $input = &process2 ($input) if (po{$_} == 2); $input = &process3 ($input) if (po{$_} == 3); $input = &process4 ($input) if (po{$_} == 4); }