我有多个数组 (~32)。我想从中删除所有空白元素。如何在短时间内完成(可能通过一个 foreach 循环或 1-2 条命令行)?
我尝试了下面的方法,但它不起作用:
my @refreshArrayList=("@list1", "@list2", "@list3","@list4", "@list5", "@list6" , "@list7");
foreach my $i (@refreshArrayList) {
$i = grep (!/^\s*$/, $i);
}
比方说,@list1 = ("abc","def","","ghi"); @list2 = ("qwe","","rty","uy", "iop"),其他数组也类似。现在,我想从所有数组中删除所有空白元素。
所需的输出应为:@list1 = ("abc","def","ghi"); @list2 = ("qwe","rty","uy", "iop") ### 从所有数组中移除所有空白元素。
如何实现?
最佳答案
您可以创建一个列表引用列表,然后迭代这些列表,例如
for my $list (\@list1, \@list2, \@list3) {
@$list = grep (!/^\s*$/, @$list);
}
当然,您也可以动态创建此列表引用列表,即
my @list_of_lists;
push @list_of_lists, \@list1;
push @list_of_lists, \@list2;
...
for my $list (@list_of_lists) {
@$list = grep (!/^\s*$/, @$list);
}
关于arrays - Perl:一次从多个数组中进行grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72907260/