Perl:从数组中删除具有特殊字符的元素

Perl:从数组中删除具有特殊字符的元素,perl,Perl,当数组是设备名或ip地址,但下面的元素名中有ie特殊字符时,我可以从数组中删除元素 善意的建议,因为我已经尝试了2-3种方法,但都不起作用 例如,如果密钥值为network或ip 100.100.100.100,则逻辑正常工作,但当密钥名称为net switch或router net时,它不会删除 option1 @array = eval { grep { $_ != $Key } @array1; }; Option2 @array = eval{ grep { $_->[0]

当数组是设备名或ip地址,但下面的元素名中有ie特殊字符时,我可以从数组中删除元素

善意的建议,因为我已经尝试了2-3种方法,但都不起作用

例如,如果密钥值为network或ip 100.100.100.100,则逻辑正常工作,但当密钥名称为net switch或router net时,它不会删除

option1 

@array = eval { grep { $_ != $Key } @array1; };

Option2
@array = eval{ grep { $_->[0] ne "$Key" } @array1; }; 


2014/06/29 11:14:56 $VAR1 = [
          '100.2.2.3-0-2',
          '100.4.7.1-0-2',
          '100.2.120.2-0-2',
          '100.1.2.29-3-2',
          'network-0-2',
          'switch-1-1',
          'network-0-2',
          'router45',
           ];
谢谢

use warnings;
use strict;

my @array = (
          '100.2.2.3-0-2',
          '100.4.7.1-0-2',
          '100.2.120.2-0-2',
          '100.1.2.29-3-2',
          'network-0-2',
          'switch-1-1',
          'network-0-2',
          'router45',
           );

# my $key = '100.2.2.3-0-2'; # Either of these will work 
my $key = 'network-0-2';

my @keep;
foreach (@array){
    push @keep, $_ unless $_ eq $key;
}

print Dumper \@keep;





=
是数值
不相等的
运算符,但由于要测试字符串不相等性,请使用
ne
运算符

my @array = grep { $_ ne $Key } @array1;

=
是数值
不相等的
运算符,但由于要测试字符串不相等性,请使用
ne
运算符

my @array = grep { $_ ne $Key } @array1;

=
是数值
不相等的
运算符,但由于要测试字符串不相等性,请使用
ne
运算符

my @array = grep { $_ ne $Key } @array1;

=
是数值
不相等的
运算符,但由于要测试字符串不相等性,请使用
ne
运算符

my @array = grep { $_ ne $Key } @array1;


尝试选项三
@array=grep{$\ne$Key}@array1带有实际$key和@array的可运行脚本会很有帮助。一如既往地使用警告和严格警告;我收到一个错误,无法使用字符串(“网络xyz”)作为数组引用,而在使用的“严格引用”atmpapec@ARRAY包含路由器、交换机名称和网络信息的列表。关键是ip地址、路由器名称和带有特殊字符的名称,我的意思是带破折号。请使用Data::Dumper;打印转储程序\@数组
并提供输出的摘录,以便我们准确地了解数据结构带有实际$key和@array的可运行脚本会很有帮助。一如既往地使用警告和严格警告;我收到一个错误,无法使用字符串(“网络xyz”)作为数组引用,而在使用的“严格引用”atmpapec@ARRAY包含路由器、交换机名称和网络信息的列表。关键是ip地址、路由器名称和带有特殊字符的名称,我的意思是带破折号。请使用Data::Dumper;打印转储程序\@数组并提供输出的摘录,以便我们准确地了解数据结构带有实际$key和@array的可运行脚本会很有帮助。一如既往地使用警告和严格警告;我收到一个错误,无法使用字符串(“网络xyz”)作为数组引用,而在使用的“严格引用”atmpapec@ARRAY包含路由器、交换机名称和网络信息的列表。关键是ip地址、路由器名称和带有特殊字符的名称,我的意思是带破折号。请使用Data::Dumper;打印转储程序\@数组并提供输出的摘录,以便我们准确地了解数据结构带有实际$key和@array的可运行脚本会很有帮助。一如既往地使用警告和严格警告;我收到一个错误,无法使用字符串(“网络xyz”)作为数组引用,而在使用的“严格引用”atmpapec@ARRAY包含路由器、交换机名称和网络信息的列表。关键是ip地址、路由器名称和带有特殊字符的名称,我的意思是带破折号。请使用Data::Dumper;打印转储程序\@数组并提供输出的摘录,以便我们准确地了解数据结构。感谢您的响应。如果我不想打印记录,我可以像foreach(@array){除非$eq$key;push(array1,$key);}一样写入吗?感谢您的响应。如果我不想打印记录,我可以像foreach(@array)一样写入吗{除非$eq$key;push(array1,$key)}谢谢你的回复。如果我不想打印记录,我可以像foreach(@array)一样写吗{除非$eq$key;push(array1,$key)}谢谢你的回复。如果我不想打印记录,我可以像foreach(@array){除非$eq$key;push(array1,$key)}