Sto semplicemente cercando di ottenere un elenco di nomi di file con un percorso con caratteri jolly.Perl: strano comportamento di glob con file superiori a 2 GB
my $path = "/foo/bar/*/*.txt";
my @file_list = glob($path);
foreach $current_file (@file_list) {
print "\n- $current_file";
}
Principalmente questo funziona perfettamente, ma se c'è un file superiore a 2 GB, da qualche parte in una delle/foo/bar/* sottotracciati, il glob restituisce un array vuoto senza alcun errore o avviso.
Se rimuovo il file o aggiungere una sequenza di caratteri/staffa in questo modo:
my $path = "/foo/bar/*[0-9]/*.txt";
o
my $path = "/foo/bar/*1/*.txt";
poi il glob funziona di nuovo.
UPDATE:
Ecco un esempio (per una questione di politica aziendale ho dovuto mascherare il percorso):
[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 #
Rimozione del file> 2 GB (o globbing con "/ foo/bar/[ACF] / "istead di"/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 #
Qualsiasi suggerimento?
Sto lavorando con: Perl 5.8.8 Aix 5.3 Il filesystem è un jfs locale.
È questo l'intero programma vero e proprio che ha dato il problema? L'unica ragione per cui sto chiedendo è che un 'glob' precedente potrebbe influenzare il ritorno di un' glob' successivo. – ikegami
Il problema è venuto fuori con un codice più complesso, ma il problema è perfettamente replicato da questo snipplet. – roovalk
puoi mostrare il più piccolo possibile banco di prova riproducibile con file di dati reali da qualche parte? – mvp