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

标签 arrays perl while-loop line-numbers

我正在使用 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/

相关文章:

java - 为什么我的 .length 方法不能用于数组?

javascript - 如何将用户输入与存储在数组中的项目进行比较?

perl - Getopt::Long::Descriptive - 如何声明变量

perl - 如何使 log4perl 输出更易于阅读?

python - 要求用户输入数字并输出总和以及输入数字的数量的程序

c - 打印 '.' 之后的每个字母,例如如果我输入 a..bcde..fg..h,程序将打印 bfh

c++ - 我可以在我的代码中更改什么以使我的 Quicksort 功能正常工作? (使用结构和数组对姓氏进行排序)

ruby - 关于 Perl 和 Ruby 套接字编程的问题

php - 在 while 循环 PHP 中删除重复项

Javascript 数组在 Pop 循环时插入内部