gpt4 book ai didi

Perl 输入文件字符串匹配

转载 作者:行者123 更新时间:2023-12-01 12:48:57 26 4
gpt4 key购买 nike

我是 Perl 的新手,正在尝试编写脚本来搜索文件并检查/匹配来自其他输入文件的多个字符串。这是我目前拥有的:

#! /css/dvltools/localperl/bin/perl

open CUMRT603, "CUMRT603";

my $meter, $my_cur_line;
while ( <CUMRT603> )
{
$my_cur_line = $_;
chomp $my_cur_line;

open METER_LIST, "mlist";
while ( <METER_LIST> )
{
$meter = $_;
if ( $my_cur_line =~ /"$meter"/ )
{
print "Found $meter on $my_cur_line";
}
}

close METER_LIST;
}

基本上,我在 CUMRT603 中搜索在列表 (mlist) 中找到的任何字符串。我无法让它显示任何字符串匹配(应该至少有一个)。任何关于语法、结构等的建议都是值得赞赏的。这基本上是我的第一个 perl 脚本。

最佳答案

您的 $meter 输入缺少 chomp,因此大概它永远无法匹配被 chomped 的 $my_cur_line 变量。

此外,正则表达式中的那些双引号将按字面解释,因此如果 $meterfoo,它将尝试匹配 "foo",我不确定这是你想要的。

此外,您可能希望防止在匹配的文本中使用元字符,这可以使用 quotemeta 或 \Q ...\E 来完成。

因此,简而言之,您的代码可能应该是:

chomp $meter;
if ( $my_cur_line =~ /\Q$meter\E/ )

你也真的应该使用

use strict;
use warnings;

较短的学习曲线更能节省调试时间。

关于Perl 输入文件字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13746423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com