2

我正在使用while循环将输入文件中的实数分配给数组。输入文件的设置方式使数组中的前 21 个点为空白。数字 21 对应于我的输入文件中包含短语“Range1”的行号减去 1。我正在使用

splice @range_min, 0, $header_lines-1;

从我的数组中删除那些空白行。

我希望 $header_lines 等于包含该短语的行号,因为我可能有其他输入文件与该短语在不同的行上。

我已经尝试将以下命令放入我的 while 循环中:

$header_lines = $., last if /Range1/;

这确实有效,但它完全清除了我的数组(违背了我的程序的目的)。

有没有更好的方法可以在不影响我的 while 循环或数组的情况下在输入文件中找到我的短语的行号?

4

1 回答 1

2

试着把它放在你的循环中:

    if ( /Range1/ ) {
        $header_lines = $.;
    }

我认为当前发生的情况是,每次通过循环时,您都将 $header_lines 设置为当前行号 ($.)。代码“last if /Range1/;” 当 $_ 匹配 Range1 时退出循环。所以你只会设置前 21 行,然后退出,然后擦除所有行。

于 2013-07-09T20:10:24.233 回答