Я просто пытаюсь получить список имен файлов, заданных с помощью шаблона.
my $path = "/foo/bar/*/*.txt";
my @file_list = glob($path);
foreach $current_file (@file_list) {
print "\n- $current_file";
}
В основном это работает отлично, но если есть файл размером более 2 ГБ, где-то в одном из подпунктов /foo/bar/ *, glob возвращает пустой массив без каких-либо ошибок или предупреждений.
Если я удалю файл файла или добавлю последовательность символов/скобок, как это:
my $path = "/foo/bar/*[0-9]/*.txt";
или
my $path = "/foo/bar/*1/*.txt";
тогда glob снова работает.
UPDATE:
Вот пример (для бизнес-политики мне пришлось замаскировать путь):
[root]/foo/bar # ls -lrt
drwxr-xr-x 2 root system 256 Oct 11 2006 lost+found
drwxr-xr-x 2 root system 256 Dec 27 2007 abc***
drwxr-xr-x 2 root system 256 Nov 12 15:32 cde***
-rw-r--r-- 1 root system 2734193149 Nov 15 05:07 archive1.tar.gz
-rw-r--r-- 1 root system 6913743 Nov 16 05:05 archive2.tar.gz
drwxr-xr-x 2 root system 256 Nov 16 10:00 fgh***
[root]/foo/bar # /home/user/test.pl
[root]/foo/bar #
Удаление файлa > 2 ГБ (или подглаживание с помощью /foo/bar/ [acf]/ "istead of" /foo/bar// ")
[root]/foo/bar # ls -lrt
drwxr-xr-x 2 root system 256 Oct 11 2006 lost+found
drwxr-xr-x 2 root system 256 Dec 27 2007 abc***
drwxr-xr-x 2 root system 256 Nov 12 15:32 cde***
-rw-r--r-- 1 root system 6913743 Nov 16 05:05 archive2.tar.gz
drwxr-xr-x 2 root system 256 Nov 16 10:00 fgh***
[root]/foo/bar # /home/user/test.pl
- /foo/bar/abc***/heapdump.phd.gz
- /foo/bar/cde***/javacore.txt.gz
- /foo/bar/fgh***/stuff.txt
[root]/foo/bar #
Любое предложение?
Я работаю с: Perl 5.8.8 Aix 5.3 Файловая система является локальным jfs.