我正在使用while循环将输入文件中的实数分配给数组。输入文件的设置方式使数组中的前21个点为空。数字21对应于我的输入文件中包含短语“Range1”的行号减去1.我正在使用
splice @range_min, 0, $header_lines-1;
从我的数组中删除这些空行。
我希望$ header_lines等于包含该短语的行号,因为我可能在其他行上有其他输入文件和该短语。
我已经尝试将以下命令放入我的while循环中:
$header_lines = $., last if /Range1/;
哪个有效,但它完全清除了我的数组(违背了我的程序的目的)。
有没有更好的方法在输入文件中查找我的短语的行号而不影响我的while循环或数组?
答案 0 :(得分:2)
尝试将其放入循环中:
if ( /Range1/ ) {
$header_lines = $.;
}
我认为目前正在发生的事情是,每次循环时,都会将$ header_lines设置为当前行号($。)。代码“last if / Range1 /;” $ _匹配Range1时退出循环。因此,您只需设置前21行,然后退出,然后删除所有行。