Perl - 全局符号$ DIR需要显式包名称(为什么我不能打印输出?)

时间:2017-01-13 16:25:55

标签: perl

#!/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();

1 个答案:

答案 0 :(得分:2)

您收到错误是因为您使用的是您从未声明过的变量($DIR)。您确实声明了一个名为$dir的变量,它似乎是您打算使用的变量。

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

您的代码错误处理了包含空格的路径,*?等。使用

修复注入错误
glob "\Q${dir}\E/*.csv"
glob "\Q$dir\E/*.csv"
glob quotemeta($dir)."/*.csv"