我的Perl程序创建该文件
10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.txt 然后在方法中我有一个代码:
if ( -e $report ) {
# we parse the filet here is some code, at the end
{
else
}
print "*** Skipping \\NYNAS\NYNDS\VOL\DATA\INVACCT\FUND_RECS_PFI\10001.ICNTL.20160603.PROD.GAAP.PFI\10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.TXT
} 我不明白为什么脚本看不到文件。我已经逐字检查过好几次了。会不会是因为大写的TXT,但实际上是小写?
发布于 2016-06-21 05:23:05
您的文件10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.txt是否在\\NYNAS\NYNDS\VOL\DATA\INVACCT\FUND_RECS_PFI目录中
在猜测中,您没有正确转义文件路径。即使使用单引号,也无法在 (UNC) paths中表示两个前导反斜杠而不对其中至少一个进行转义
检查print $report, "\n"的输出,看看您真正写的是什么
我更喜欢在路径字符串的开头使用四个反斜杠,如下所示
my $report = '\\\\NYNAS\NYNDS\VOL\DATA\INVACCT\FUND_RECS_PFI\10001.ICNTL.20160603.PROD.GAAP.PFI\10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.TXT';
print -e $report ? "Found\n" : "Not found\n";Perl允许您在Windows路径中使用正斜杠代替反斜杠,所以如果您愿意,也可以这样写,但是这样的路径在其他Windows软件中是无效的
my $report = '//NYNAS/NYNDS/VOL/DATA/INVACCT/FUND_RECS_PFI/10001.ICNTL.20160603.PROD.GAAP.PFI/10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.TXT';或者,另一种选择是重新定位当前的工作目录。您不能在Windows命令行上cd到UNC路径,但是Perl允许您成功地chdir。
chdir '//NYNAS/NYNDS/VOL/DATA/INVACCT/FUND_RECS_PFI' or die $!;此后,所有相对文件路径都将相对于联网系统上的这个新工作目录
https://stackoverflow.com/questions/37931830
复制相似问题