Если вы хотите обеспечить определенный заказ, сортируйте его самостоятельно, даже если просто для того, чтобы убедиться, что он получится правильным:
my @files = sort { ... } glob( ... );
В этом случае, когда имена файлов совпадают, за исключением отдельных цифр, вам может не понадобиться блок сортировки:
my @files = sort glob( ... );
Чтобы прочитать их как один über-файл, мне нравится использовать local @ARGV
, чтобы я мог использовать оператор diamond, который на самом деле является просто волшебным ARGV
дескриптором файла. Когда он достигает конца одного файла в @ARGV
, он переходит к следующему. Это подделывает указание всех файлов в командной строке, присваивая @ARGV
внутри программы:
{
local @ARGV = sort { ... } glob( ... );
while( <> ) {
...;
}
}
Если вам нужно знать файл, который вы сейчас обрабатываете, посмотрите в $ARGV
.
Если вам нужно что-то более причудливое, вам, возможно, придется прибегнуть к грубой силе.