use Sort::Key::Merger qw(filekeymerger); my $merger = filekeymerger { chomp; return undef if /^#/; make_sorting_key($_) } @filenames; while (defined(my $line = $merger->())) { whatever($line); }