use Sort::Key::Natural; use Sort::Key::Maker sort_filenames => sub { /^(.*?)((?:\.[^\.]*)?)$/ }, qw(natural natural); my @filenames = qw(...); my @sorted = sort_filenames @filenames;