2016-06-20 15 views
0

Mein Perl-Programm die DateiMein Perl-Skript sehen nicht die txt-Datei

10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.txt  

Dann Methode erstellt habe ich einen Code:

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   
}  

Ich kann nicht verstehen, warum das Skript doesn Ich sehe die Datei nicht. Ich habe es mehrmals Buchstabe für Buchstabe überprüft. Kann es wegen der Großbuchstaben TXT sein, aber in Wirklichkeit ist es Kleinbuchstaben?

+2

Die relative sein TXT in Großbuchstaben ist wahrscheinlich ein Problem. – nbryans

+0

Nein, ich habe es nur in Großbuchstaben geändert, das gleiche Ergebnis, überspringt –

+1

Ihr Code wird nicht kompiliert. Bitte kopieren und fügen Sie Ihren echten Code ein, wenn Sie nützliche Antworten wünschen. Bitte zeigen Sie den Teil Ihres Codes, der '$ report' definiert und in die Datei schreibt. Ist $ report, dass die Zeichenfolge \\ NYNAS \ NYNDS \ VOL \ DATEN \ INVACCT \ FUND_RECS_PFI \ 10001.ICNTL.20160603.PROD.GAAP.PFI \ 10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE. TXT'? – Borodin

Antwort

2

Ist Ihre Datei 10001.ICNTL.20160602.20160603.OPR.GAAP.PROD.PFI.PRE.txt im Verzeichnis \\NYNAS\NYNDS\VOL\DATA\INVACCT\FUND_RECS_PFI?

Bei einer Vermutung entgehen Sie nicht den Dateipfad korrekt. Auch wenn Sie einfache Anführungszeichen verwenden, gibt es keine Möglichkeit, die beiden führenden Schrägstriche in Uniform Naming Convention (UNC) paths zu vertreten, ohne zumindest einer von ihnen zu entkommen

Überprüfen Sie die Ausgabe von print $report, "\n", um zu sehen, was Sie wirklich

geschrieben haben

Meine Präferenz ist vier Schrägstriche am Anfang der Pfadzeichenfolge, wie diese

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"; 

nutzen und Perl können Sie vorwärts Schrägstriche anstelle von Schrägstriche in einem Windows-Pfad verwenden, so könnte man w rite dieser Stelle, wenn Sie es vorziehen, aber Wege wie diese sind in anderer Windows-Software nicht gültig

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'; 

Oder eine andere Alternative ist Ihr aktuelles Arbeitsverzeichnis zu verlagern. Sie können nicht cd auf einen UNC-Pfad auf der Windows-Kommandozeile, aber Perl können Sie chdir erfolgreich

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

Danach alle relativ Dateipfade in diesem neuen Arbeitsverzeichnis auf Ihrem vernetzten System