gpt4 book ai didi

perl - 如何将特定模式与 if 条件匹配

转载 作者:行者123 更新时间:2023-12-01 10:54:15 25 4
gpt4 key购买 nike

我的文本文件:

Name: mak
Place: ynr
Age: 22
-------------
Name: john
Place: kkr
Age: 21
-------------
Name: mak
Place: knl
Age: 23
-------------

我正在做的是:

open(FILE, "path to file") or die "";
$check="mak";
@arr=<FILE>
for(@arr)
{
if ($_=/Name:\s(.*)/)
{
$a=$1;
if($a eq $check)
{
print "matched name"
}
#now i want if "mak" is matched then after that it should match the age and store it one variable and then compare it with other matched age with same name
}
}

我想先获取名字,如果它匹配为“mak”,那么我还需要检查年龄并比较年龄。

最佳答案

您的文件格式可以描述如下:

  • 多条记录之间用单杠隔开
  • 每条记录都有多个名称-值对,每对占一行

输入记录分隔符$/可以设置为任意字符串,所以我们可以这样做

local $/ = "-------------\n";

现在,每个 readline 操作将返回一条记录。 chomp 将删除分隔符。

从记录中获取字段非常简单

my %fields = map split(/:\s*/, $_, 2), split /\n/, $record;

我们可以把它结合起来一次查一条记录:

use strict; use warnings;

my $check = shift @ARGV;

local $/ = "-------------\n";
while (<>) {
chomp;
my %fields = map split(/:\s*/, $_, 2), split /\n/, $_;
if ($fields{Name} eq $check) {
# do something
}
}

这将在命令行上调用,例如 perl the-script.pl mak file.txt

关于perl - 如何将特定模式与 if 条件匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317785/

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