2017-01-13 5 views
-5
#!/db/pub/infra/CPAN/perl/5.8.8/bin/perl 

use lib '/db/pub/eq/arina/global/perl/lib'; 
use lib '/db/pub/infra/CPAN/perl/5.8.8/lib/site_perl/5.8.8'; 

use DBI; 
use strict; 

sub main { 

    my $dir = "/data/dbxpc2_archive/BookingManager/2017-01-12/data/PC1/millennium.ignore.ftp.noencrypt.DB_USD"; 

    my @files = glob "${DIR}/*.csv"; 

    print @files; 
} 

main(); 
+8

mit Weil '$ DIR' ist eine andere Variable als' $ dir'. – mob

+0

'use strict;' und 'use warnings;' – stevieb

+1

@stevieb: * "Globales Symbol $ DIR benötigt einen expliziten Paketnamen" * zeigt an, dass sie mindestens 'use strict 'vars'' an ihrem Platz haben. – Borodin

Antwort

2

Sie den Fehler erhalten, weil Sie eine Variable verwenden ($DIR) Sie nie erklärt. Sie haben eine Variable mit dem Namen $dir deklariert, die anscheinend die zu verwendende Variable ist.

glob "${dir}/*.csv" 
glob "$dir/*.csv" 
glob $dir."/*.csv" 

Ihr Code mishandles Pfade mit Leerzeichen, *, ? usw. Befestigen Sie die Injektion Fehler

glob "\Q${dir}\E/*.csv" 
glob "\Q$dir\E/*.csv" 
glob quotemeta($dir)."/*.csv" 
Verwandte Themen