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