use File::Basename; sub sort_files { my ($aname,$apath,$asuff)=fileparse $$a{'path'}; my ($bname,$bpath,$bsuff) = fileparse $$b{'path'}; if ($$a{'file'}) { $aname= 'zzzzzzzz'.$aname; } if ($$b{'file'}) { $bname= 'zzzzzzzz'.$bname; } lc $apath.$aname cmp lc $bpath.$bname; }