gpt4 book ai didi

perl - 当我只期待一个匹配时,我可以将 grep(或 map)限制为第一个匹配吗?

转载 作者:行者123 更新时间:2023-12-04 13:30:23 26 4
gpt4 key购买 nike

我真的是 Perl 的新手。我有以下...

#!/usr/bin/perl

#config file
$config = "$ENV{'HOME'}/.config/.wallpaperrc";

open my $handle, '<', $config;
chomp(my @lines = <$handle>);
close $handle;

@regular = map(/^regular\.roll (.*)$/, @lines);

print(@regular);

它有效,但是当我只期待一场比赛并且只想要一场比赛时,使用数组似乎很尴尬和不合适。如果我制作 @regular 标量,则该函数将返回匹配的数量。

我试图寻找答案,但结果与在 Bash 中使用 Perl grep 的所有问题混为一谈。

最佳答案

您可以通过分配给列表上下文中的标量来捕获单个匹配项

($regular) = map(/^regular\.roll (.*)$/, @lines);

左侧的括号很重要,否则您将在右侧大小上施加标量上下文,结果将是其他内容,例如元素的数量。

如果您试图从 grep 捕获第一个匹配项(但不是 map )并且您更喜欢使用 Perl 模块, first List::Util 中的函数package 返回第一个匹配,并且比调用 grep 更有效并丢弃所有额外的匹配项。
use List::Util 'first';
...
$regular = first { /pattern/ } @input;

关于perl - 当我只期待一个匹配时,我可以将 grep(或 map)限制为第一个匹配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57779957/

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