@ARGV=glob my $pattern; my @files=@ARGV; my @sorted = @file[ map { unpack "N", substr($_,-4) } sort map { my $key = $file[$_]; $key =~ s[(\d+)][ pack "N", $1 ]ge; $key . pack "N", $_ } 0..$#file ]; @ARGV=@sorted; while (<>) { Do my function } if (eof(ARGV)) { Do end of file cleanup }