【问题标题】:How do I find the line number of a certain phrase in perl?如何在 perl 中找到某个短语的行号?
【发布时间】:2013-07-07 11:42:15
【问题描述】:

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

splice @range_min, 0, $header_lines-1;

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

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

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

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

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

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

【问题讨论】:

    标签: arrays perl while-loop line-numbers


    【解决方案1】:

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

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

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

    【讨论】:

    • 效果很好!谢谢你。我认为你的解释也完全正确。
    猜你喜欢
    • 2021-09-18
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多