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. 如何在python中获取当前打开的文件行?
- 2. 如何读取当前使用Eclipse插件打开的文件?
- 3. 如何使用fopen打开文件中的当前行?
- 4. 获取当前打开的文档
- 5. 使用文件名获取当前pid打开的文件的fileno()?
- 6. 如何获取当前打开的文件的文件夹在c#
- 7. perl - 打开文件 - 获取日期
- 8. 如何获取当前行号?
- 9. 处理文件时,如何获取当前行号?
- 10. [Golang] [Linux] - 如何获取当前用户打开的所有文件
- 11. 如何使用C#在Excel中获取当前打开的文档?
- 12. 获取当前行号?
- 13. DAX - 获取当前行号
- 14. Linux:获取程序当前打开的文件列表
- 15. 如何使用Perl获取ISO格式的当前日期?
- 16. 如何在IntelliJ中执行当前打开的ruby文件?
- 17. 如何使用perl的XML获取XML文件的行/列:SAX
- 18. 从命令行获取当前打开的应用程序
- 19. 如何在用Perl打开的Excel文件中运行宏?
- 20. 如何使用intent.action.VIEW打开文件时获取文件URI?
- 21. 如何在Perl中获取文件名和行号?
- 22. 如何使用Selenium Perl API获取当前网址
- 23. 用Vim命令打开当前文件
- 24. 如何获取当前执行的模板文件名?
- 25. 用PHP获取当前文件的URL
- 26. 如何获取Dashcode打开JSP文件?
- 27. 如何在当前打开的Aptana打开的FileZilla文件工作室3
- 28. Word VBA:如何获取当前节号
- 29. 如何获取创建Perl子例程引用的文件和行号?
- 30. 获取文件的行号
如果你想读取一行到$ 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