Perl:从数组中删除带有特殊字符的记录

时间:2014-08-20 08:22:33

标签: perl

我想从数组中查找并删除记录。我使用的是option1,但它没有用。 array1值中的值类似于

abc::record1 
def:record2
ghf::record3 
poi::record4

和需要比较的值就像是变量项中的record1,record2,record3。

选项1:

my @found = grep( /^$item$/, @array1 );

if (@found){
      @array = eval { grep(!/$item/, @array1); };
      @array1 = @array;

     }

我可以尝试使用选项2,这会查找完全匹配或字符串/行中的任何值吗?

选项2

@array = grep { $_ ne $item } @array1;
@array1 = @array;

由于

2 个答案:

答案 0 :(得分:0)

只需取消拼接即可删除数组元素,语法为

splice @array,$ first_index [,$ number_of_replaced_element] [,@ value]

  • @array是您要修改的数组。
  • $ number_of_replaced_element:您要修改或删除的元素数
  • @values:要插入的值

e.g:

my @array = (1,2,3,4,5,6);
# delete the third element
splice @array, 2, 1;
# replace the third element by 1
splice @array, 2, 1, 1;
# delete each element after thz second
splice @array, 2;

答案 1 :(得分:0)

只要我理解你的问题,我会建议选项3:

foreach (@array1){
   if ($item == $_) { < -  This is the current element of the array
      Do What you want
   }

}