Perl - Как открыть каталог - Вернуть имя файла с наименьшим номером, используя posix и / abs? - PullRequest
0 голосов
/ 23 ноября 2010

Ну, я снова вернулся, застрял на другой, казалось бы, простой рутине.Мне нужно выяснить, как это сделать с помощью Perl.

1 - я открываю каталог, полный файлов с именами 1.txt, 2.txt ~ 100.txt.

(Но иногдаИмя файла с наименьшим номером может фактически быть любым числом (27.txt) из-за того, что 0-26.txt уже удален из каталога.)

(я узнал, как реализовать сортировку ABS так; 1,2,3 нет1,10,11 ~ 2,20 был возвращен заказ.)

    use POSIX;
    my @files = </home/****/users/*.txt>;
    foreach $file (@files) {
    ##$file ABS($file)
    ##and so on..
    ##EXAMPLE NOT TRIED
    }

2- Я просто хочу вернуть имя файла с наименьшим номером в каталоге в $ var.

Должен ли я прочитать весь каталог в массив, выполнить abs-сортировку, а затем отключить первый в массиве?

Есть ли более эффективный способ получить самый низкий номер?file?

Дополнительная информация:

Файлы были созданы с помощью / с циклом, поэтому я также подумал о том, чтобы сначала получить самый старый файл, если время создания действительно настолько чувствительно.Но я новичок и не знаю, достаточно ли точное время создания и как его использовать, или действительно ли это жизнеспособное решение.

Спасибо за помощь, я всегда нахожу лучших людейздесь.

1 Ответ

1 голос
/ 23 ноября 2010
use strict;
use warnings;
use File::Slurp qw(read_dir);
use File::Spec::Functions qw(catfile);

my $directory = 'some/directory';
my @files = read_dir($directory);
my @ordered;
{
    no warnings 'numeric';
    @ordered = sort { $a <=> $b } @files;
}

my $lowest_file = catfile $directory, $ordered[0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...