我怎样才能做到这一点?
open FILE, $somefile;
foreach (<FILE>)
{
if (/some_regex/)
{
$want_the_next_line = <FILE>;
$want_the_next_line_after_that = <FILE>;
}
}
明白我的意思了吗?我基本上想在 foreach 中间插入一堆行,而不必记住我的状态并在每次迭代时检查它。目前我在 Perldoc 中找不到任何关于 的有用信息。
哦,顺便说一句,我真的不想:
@file = <FILE>;
我相信你明白。
Use while
代替foreach
:
open FILE, $somefile;
while (<FILE>) # <<-- HERE
{
if (/some_regex/)
{
$want_the_next_line = <FILE>;
$want_the_next_line_after_that = <FILE>;
}
}
The while
循环只会读取一行<FILE>
然后您可以在当前迭代中按照您的意愿使用它。
此外,这种技术将帮助您避免一次读取整个文件。
技术背景: foreach()
需要一个数组,因此一次读取整个文件,而表达式中while()
循环是标量上下文,仅检查“假”值,就像 EOF 生成的那样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)