Perl找不到数据文件

时间:2018-12-11 01:54:12

标签: perl

我有一个Perl脚本,它拒绝查看现有数据文件。当我获取代码并隔离到测试Perl脚本中时,它可以正常工作,但在主perl脚本中,它找不到任何东西。

代码如下:

use Cwd qw(cwd);

my $dir = cwd;
print STDERR "gen-decsplecs : dir $dir : file $ARGV[0]\n";

if (-e $ARGV[0]) {
    print STDERR "gen-declspecs : File Exists : $ARGV[0]\n";
} else {
    print STDERR "gen-declspecs : File does not exist : $ARGV[0]\n";
}

if (-e "C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h") {
    print STDERR "gen-declspecs : File Exists : C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h\n";
} else {
    print STDERR "gen-declspecs : File does not exist : C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h\n";
}

open(F, $ARGV[0]) || die "$ARGV[0]: $!";

此打印:

gen-decsplecs : dir C:/Users/walter/Documents/Projects/agar-1.5.0 : file './ada-core/ctxt.h'
gen-declspecs : File does not exist : './ada-core/ctxt.h'
gen-declspecs : File Exists : C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h
'./ada-core/ctxt.h': No such file or directory at mk/gen-declspecs.pl line 93.
gen-declspecs.pl failed

所以我的问题是代码是否正在执行fomr目录:

C:/Users/walter/Documents/Projects/agar-1.5.0

正在寻找文件:

./ ada-core / ctxt.h

为什么在完整路径文件时相对路径上不存在它:

C:/用户/沃尔特/文档/项目/agar-1.5.0/ada-core/ctxt.h

存在吗?特别是当我将perl复制到测试脚本并且可以正常工作时!!

1 个答案:

答案 0 :(得分:1)

如果这行:

print STDERR "gen-declspecs : File does not exist : $ARGV[0]\n";

(不包含单引号)正在打印以下输出:

gen-declspecs : File does not exist : './ada-core/ctxt.h'

(确实如此),则意味着您的$ARGV[0]以虚假单引号开头和结尾。 -e不会删除这些内容;据了解,也许您真的对名为'.的文件夹感兴趣,该文件夹包含名为ada-core的文件夹,其中包含名为ctxt.h'的文件!

要解决此问题,您需要正确运行脚本;请勿在其参数中添加虚假的单引号。

(如果您来自类似Unix的环境,则需要知道默认的Windows Shell根本不使用相同的引用规则。)