open my $fp, '<', $file or die $!;
while (<$fp>) {
my $line = $_;
if ($line =~ /$regex/) {
# How do I find out which line number this match happened at?
}
}
close $fp;
回答
使用$.
(參見perldoc perlvar
)。
從技術上講,'$ .'不一定是行號;它是readline操作符被調用的最後一個句柄被調用的次數,因爲該句柄的最後一個'close'(而不是'open')。如果'$ /'沒有設置爲'「\ n」'(例如''「'或'」\ n %% \ n「',或者如果句柄已經打開,它不會反映行它沒有調用'close'(與'ARGV'一起發生,因此用'<>');而且對於沒有正確行終止順序的文本文件, – tchrist 2011-05-07 16:46:43
@tchrist:你對邊緣案例的解釋應該在這裏作爲第三個答案發布。 – Dallaylaen 2011-05-08 17:41:30
[perldoc eof](http://perldoc.perl.org/functions/eof.html)建議'繼續如果使用<>,那麼while(<>){...}繼續{關閉ARGV if if eof}',解決@ tchrist的一個好告誡 – 2015-04-22 21:16:18
你也可以做到這一點通過OO接口:
use IO::Handle;
# later on ...
my $n = $fp->input_line_number();
這是perldoc perlvar了。
這與我剛剛提到的$當然。「 – tchrist 2011-05-07 16:48:10
- 1. 獲取的當前打開的文件
- 2. 如何在python中獲取當前打開的文件行?
- 3. 如何讀取當前使用Eclipse插件打開的文件?
- 4. 如何從eclipse IDE獲取當前打開文件的路徑?
- 5. 如何使用fopen打開文件中的當前行?
- 6. 獲取當前打開的文檔
- 7. 如何在applescript中使用photoshop(cs5)獲取當前打開的文件路徑?
- 8. 使用文件名獲取當前pid打開的文件的fileno()?
- 9. 如何獲取當前打開的文件夾的文件路徑?
- 10. 如何獲取當前打開的文件的文件夾在c#
- 11. 如何獲取eclipse來運行當前的開源文件?
- 12. perl - 打開文件 - 獲取日期
- 13. 如何獲取當前行號?
- 14. 處理文件時,如何獲取當前行號?
- 15. 如何在Ruby中獲取當前文件和行號?
- 16. 如何獲取用戶當前打開的應用程序?
- 17. [Golang] [Linux] - 如何獲取當前用戶打開的所有文件
- 18. 如何使用C#在Excel中獲取當前打開的文檔?
- 19. 獲取當前行號?
- 20. DAX - 獲取當前行號
- 21. Linux:獲取程序當前打開的文件列表
- 22. 獲取當前在Windows目錄中打開的文件名
- 23. 如何使用Perl獲取ISO格式的當前日期?
- 24. 如何在IntelliJ中執行當前打開的ruby文件?
- 25. 如何使用perl的XML獲取XML文件的行/列:SAX
- 26. 從命令行獲取當前打開的應用程序
- 27. 在Windows DLL中,如何獲取當前進程已打開的文件句柄?
- 28. 如何獲取通過獲取打開文件名應用程序命令打開的文件的文件名
- 29. 如何在Macvim中使用Chrome打開當前文件
- 30. 如何在用Perl打開的Excel文件中運行宏?
如果你想讀取一行到$ line,然後讀取一行到$行,而不是讀入一些其他變量的行,然後將其複製到$ line:while(my $ line = <$fp>){ – tadmc 2011-05-07 13:49:33
@tadmc :或者'while(defined(my $ line = <$fp>)){...}',因爲最後一行可能是零而不是以換行符結束。 – phaylon 2011-05-08 17:08:54