sub Prioritise_requests { my ($input_directory, $node) = @_; my %files; $files{1} = $input_directory."1"; $files{2} = $input_directory."2"; $files{3} = $input_directory,"3"; # this is looping on the directories in a prioritized manner foreach (sort keys %files) { open(*DATA,$_) or die; # this is looping through each file you want in each directory foreach (sort grep(/^Flat_file.*\.txt$/,readdir(DATA))) { # do your stuff for each file } close(DATA); } }