考虑以下代码:
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";
我只需要匹配字符串的开头来找到包含短语“Prayer Amount:”的元素位置。我尝试使用通配符 % 但它仍然返回 0。
我怎样才能改进这个代码?
首先,请注意,您需要强制启用列表上下文
grep
,否则它将返回匹配项的数量而不是匹配的元素。这可以通过将赋值的 LHS 括在括号中来实现:或者仅切片 grep 的第一个结果:
除了
grep
,您还可以使用first
List ::Util。它始终返回单个元素,因此不需要这样的语法技巧。与 比较时没有通配符
eq
。你可以使用索引来查找子字符串:或者,您可以使用正则表达式:
^
仅匹配字符串的开头。%
在 Perl 中不是通配符。并且eq
仅当字符串相同时才为真,不允许使用通配符。但是,您的问题在于,您使用的是数组,而本应使用哈希。您想要查找特定键并获取特定值。
此代码以冒号和空格为分隔符将每行拆分,最多包含 2 个字段,从而创建一个键/值对。然后,您可以轻松查找哈希值。
输出:
如果您想查找其他值,只需执行 即可
$data{'Judge'}
。