首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的perl脚本看不到txt文件

我的perl脚本看不到txt文件
EN

Stack Overflow用户
提问于 2016-06-21 05:06:58
回答 1查看 37关注 0票数 0

我的Perl程序创建该文件

代码语言:javascript
运行
复制
 10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.txt     

然后在方法中我有一个代码:

代码语言:javascript
运行
复制
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,但实际上是小写?

EN

回答 1

Stack Overflow用户

发布于 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"的输出,看看您真正写的是什么

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

代码语言:javascript
运行
复制
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软件中是无效的

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
chdir '//NYNAS/NYNDS/VOL/DATA/INVACCT/FUND_RECS_PFI' or die $!;

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37931830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档