我正在使用 while 循环将输入文件中的实数分配给数组。输入文件的设置方式使数组中的前 21 个点为空。数字 21 对应于我的输入文件中包含短语“Range1”的行号减 1。我正在使用
splice @range_min, 0, $header_lines-1;
从我的数组中删除那些空白行。
我希望 $header_lines 等于包含该短语的行号,因为我可能在不同的行上有其他包含该短语的输入文件。
我已经尝试将以下命令放入我的 while 循环中:
$header_lines = $., last if /Range1/;
它确实有效,但它完全清除了我的数组(违背了我程序的目的)。
有没有更好的方法可以在输入文件中查找我的短语的行号而不影响我的 while 循环或数组?
最佳答案
尝试将其放入循环中:
if ( /Range1/ ) {
$header_lines = $.;
}
我认为当前发生的情况是,每次循环时,您都将 $header_lines 设置为当前行号 ($.)。代码“last if/Range1/;”当 $_ 匹配 Range1 时退出循环。因此,您只需设置前 21 行,然后退出,然后删除所有行。
关于arrays - 如何在perl中找到某个短语的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555476/