我的 perl 脚本看不到 txt 文件



我的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 \NYNASNYNDSVOLDATAINVACCTFUND_RECS_PFI10001.ICNTL.20160603.PROD.GAAP.PFI10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.TXT        
}     

我不明白为什么脚本看不到该文件。我已经一封一封信检查了好几遍。会不会是因为大写TXT,但实际上它是小写的?

您的文件是否10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.txt在目录\NYNASNYNDSVOLDATAINVACCTFUND_RECS_PFI中?

猜测您没有正确转义文件路径。即使使用单引号,也无法在不转义其中至少一个的情况下表示统一命名约定(UNC) 路径中的两个前导反斜杠

检查print $report, "n"的输出,看看你真正写了什么

我更喜欢在路径字符串的开头使用四个反斜杠,如下所示

my $report = '\\NYNASNYNDSVOLDATAINVACCTFUND_RECS_PFI10001.ICNTL.20160603.PROD.GAAP.PFI‌​10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.TXT';
print -e $report ? "Foundn" : "Not foundn";

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 $!;

此后,所有相对文件路径都将相对于网络系统上的这个新工作目录

最新更新