【发布时间】:2013-04-16 12:16:18
【问题描述】:
我在 perl 中有一个二维数组。我想删除所有具有 >> 模式的元素。 我写了一个 perl 代码,在匹配模式之前它工作得很好,但是它不能删除那个元素,会发生一些错误。
foreach my $x(@array)
{
foreach my $y(@$x)
{
if($y =~ (m/^(\<+)|(\>+)$/ig))
{
delete $y;
}
}
}
你能帮我删除与模式匹配的特定元素吗? (我想从数组中删除和移除,而不是取消定义)
【问题讨论】:
-
您没有收到错误
delete argument is not a HASH or ARRAY element吗?如果你这样做了,为什么你没有在你的问题中说这个? -
引用perldoc.perl.org/functions/delete.html --
WARNING: Calling delete on array values is deprecated and likely to be removed in a future version of Perl. -
一个更好的问题是,您能否在将
<<<值 存储到二维数组中之前删除它们? -
您的正则表达式不需要
/g或/i。您也不需要捕获组。可以简化为m/^<|>$/。 -
除非你真正想要的是
/^(?:<+|>+)$/。