Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在perl中找到某个短语的行号?_Arrays_Perl_While Loop_Line Numbers - Fatal编程技术网

Arrays 如何在perl中找到某个短语的行号?

Arrays 如何在perl中找到某个短语的行号?,arrays,perl,while-loop,line-numbers,Arrays,Perl,While Loop,Line Numbers,我使用while循环将输入文件中的实数指定给数组。输入文件的设置方式使数组中的前21个点为空。数字21对应于输入文件中包含短语“Range1”的行号减去1。我正在使用 splice @range_min, 0, $header_lines-1; 从数组中删除这些空行 我希望$header_行等于包含该短语的行号,因为我可能会有其他输入文件在不同的行中包含该短语 我已尝试将以下命令放入while循环: $header_lines = $., last if /Range1/; 这确实有效,但它

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

splice @range_min, 0, $header_lines-1;
从数组中删除这些空行

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

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

$header_lines = $., last if /Range1/;
这确实有效,但它完全清除了我的数组(破坏了我程序的目的)


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

请尝试将其放入循环:

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

我认为当前的情况是,每次通过循环时,您都将$header\u行设置为当前行号($)。当$与Range1匹配时,代码“last if/Range1/;”退出循环。因此,您只需设置前21行,然后退出,然后删除所有行。

效果非常好!非常感谢。我认为你的解释也完全正确。