考虑以下代码:
my @Array = ("Case Number: CV-24-987654",
"Case Title: BIG NATIONAL BANK vs. IMA N DEFAULT, ET AL.",
"Case Designation: FORECLOSURE MARSH. OF LIEN",
"Filing Date: 08/10/2024",
"Judge: WILL RULE",
"Mediator: N/A",
"Next Action: N/A",
"Last Status: INACTIVE",
"Last Status Date: 10/04/2024",
"Prayer Amount: \$115,958.65");
my $index = grep { $Array[$_] eq 'Prayer Amount:%' } 0 .. $#Array;
print "My Index Number Is: $index\n";
我只需要匹配字符串的开头即可找到包含短语“祈祷金额:”的元素位置我尝试使用通配符 % 但它仍然返回 0。
我该如何改进这段代码?
提前致谢!
首先,请注意,您需要在
grep
上强制使用列表上下文,否则它将返回匹配的数量而不是匹配的元素。这可以通过将作业的 LHS 括在括号中来实现:
my ($index) = grep ...
# ~ ~
与
eq
比较时没有通配符。您可以使用索引:
my ($index) = grep { 0 == index $Array[$_], 'Prayer Amount:' } 0 .. $#Array;
或者,您可以使用正则表达式:
my ($index) = grep { $Array[$_] =~ /^Prayer Amount:/ } 0 .. $#Array;
^
仅匹配字符串的开头。