【发布时间】:2026-02-19 04:25:02
【问题描述】:
假设我有一个字符串数组,例如@matches = ("cat", "zebra", "apple"),我想打开一个文件并尝试以最简单的方式匹配这些字符串。
while (<MYFILE>)
{
chomp;
if (..some match condition...)
{
..stuff..
}
}
我可以在每一行上使用foreach 来尝试匹配,但我知道在 Perl 中必须有一种简洁的方式来表示“如果字符串 X 匹配数组 Y 中的任何模式”。我似乎在任何地方都找不到这个。
编辑:
为了澄清,这是效率极低的代码:
while (<MYFILE>)
{
chomp;
foreach $m (@matches)
{
if (~ /$m/)
{
..stuff..
}
}
}
我知道有一些速记方法可以做到这一点。
【问题讨论】:
-
“匹配”是什么意思? (a)“等于”,(b)“包含为子字符串”,还是(c)“用作正则表达式时匹配”?你愿意使用非核心模块吗?这为
any-junction 提供了一个很好的用例
标签: perl