2016-01-22 103 views
0

我剛開始學習Perl。我在文件輸入和輸出部分。這是一個非常基本的問題,我一直在網上搜索了幾個小時,看看我做錯了什麼,但我似乎無法找出原因。我相信你們中的一些人認爲這個問題應該被拒絕,但如果我能通過互聯網搜索和排除故障找到答案,我不會在這裏問。打開文件以在Perl中讀取

我的問題是爲什麼我無法打開我在文件路徑中指向的文件?

open(my $in, "<", "ioFile.txt") or die "Can't open input.txt: $!"; 

ioFile.txt與我的Perl腳本位於相同的目錄中。我已經使用了多個不同的文件路徑來查看哪些是有效的,到目前爲止還沒有。我試過使用正斜槓而不是反斜槓。

有關在Perl中打開此特定文件或文件的任何提示將不勝感激。

編輯後:

這可能是對文件的權限,但我對文件readwrite權限,但不能full control權限。我在Windows 7 btw。

+1

如果它位於同一個文件夾中,您是不是應該使用'「./ioFile.txt」'而不是? ('..'表示目錄樹中的前一個文件夾) – AntonH

+0

如果文件與腳本位於同一目錄中,請移除'../',這樣文件路徑顯示爲''ioFile.txt'' – stevieb

+0

I '已經嘗試了這兩種方法以前都給出了同樣的錯誤,'無法打開input.txt:沒有這樣的文件或目錄在C:\ filepath行303,行1',但我已經刪除了.. .. /',所以沒有人會認爲這是導致問題的錯誤。感謝您輸入 – pHorseSpec

回答

2

如果你不運行腳本,而你在該目錄要open腳本和文件都在,那麼你必須指定完整的文件路徑:

open my $in, '<', 'c:\path\to\ioFile.txt' or die "Can't open input.txt: $!"; 

perl將從您正在運行腳本的位置查找輸入文件,而不是在腳本中的目錄中(同樣,除非您在運行腳本時位於該目錄中)。

+1

不要讓那些雙反斜槓看起來很醜。爲什麼不切換到單引號字符串並丟失它們 - ''c:\ path \ to \ ioFile.txt''。 –

+2

不知道我在想什麼。我幾乎總是在nix上,所以我通常使用正斜槓,它們永遠不需要被轉義(即使在windows上也是如此),所以我不知道爲什麼我不這樣做。 – stevieb