我已經看到close ARGV可以關閉當前處理的檔案,但它似乎ARGV實際上不是檔案句柄,所以我不能在read呼叫中使用它。有什么方法可以獲取當前檔案句柄,還是我必須自己顯式打開檔案?
uj5u.com熱心網友回復:
...但似乎 ARGV 實際上不是檔案句柄,所以我不能在讀取呼叫中使用它
ARGV是一個檔案句柄,它可以在read.
從perlvar參考:
... 一個普通的檔案句柄,對應于
<>“*”打開的最后一個檔案
所以它是一個檔案句柄,可以在讀取中使用。但是您需要先使用才能<>真正打開檔案。而且它不會像往常一樣神奇地繼續處理下一個檔案<>。
要簡單地進行測驗(UNIX shell 語法,您可能需要針對 Windows 進行調整):
perl -e '<>; read(ARGV, my $buf, 10); print $buf' file
將<>打開給定的檔案并讀取第一行。然后read將從同一個檔案中讀取接下來的 10 個位元組。
uj5u.com熱心網友回復:
<>是 的縮寫readline( ARGV )。
使用的檔案句柄是ARGV.
但是,readline有特殊代碼可以打開/重新打開ARGV,read但沒有。
但是,您可以通過操縱來實作readusing 。readline$/
$ echo abcdef | perl -Mv5.14 -e'local $/ = \2; $_ = <>; say "<<$_>>";'
<<ab>>
$ perl -Mv5.14 -e'local $/ = \2; $_ = <>; say "<<$_>>";' <( echo abcdef )
<<ab>>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/537912.html
標籤:perl文件句柄
上一篇:Perl中的位元組序列
下一篇:編輯檔案中的最后一個實體
