2016-06-20 3 views
0
программа

Мой Perl создает файлМой 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, но на самом деле это нижний регистр?

+2

The верхний регистр TXT, вероятно, является проблемой. – nbryans

+0

Нет, я просто изменил его на верхний регистр, тот же результат, пропуская –

+1

Ваш код не будет компилироваться. Скопируйте и вставьте свой реальный код, если вы хотите получить полезные ответы. Пожалуйста, покажите часть своего кода, которая определяет '$ report' и записывает файл. Является '$ 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'? – Borodin

ответ

2

Является ли ваш файл 10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.txt в каталоге \\NYNAS\NYNDS\VOL\DATA\INVACCT\FUND_RECS_PFI?

Угадайте, что вы не избегаете пути к файлу правильно. Даже если вы используете одинарные кавычки, не существует никакого способа представления два ведущих обратного слеша Uniform Naming Convention (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'; 

Или другая альтернатива переместить текущую рабочую директорию. Вы не можете cd на путь UNC в командной строке Windows, но Perl позволяет chdir успешно

chdir '//NYNAS/NYNDS/VOL/DATA/INVACCT/FUND_RECS_PFI' or die $!; 

После этого все относительные пути к файлам будет относительно этой новой рабочей директории на вашей сетевой системы

Смежные вопросы