首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl:从数组中移除具有特殊字符的元素

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

Stack Overflow用户
提问于 2014-06-28 16:33:22
回答 2查看 914关注 0票数 0

当数组是一个设备名或一个ip地址时,但是当元素名下面的特殊字符不起作用时,我可以从数组中删除元素。

请给我建议,因为我已经尝试了2-3种方法,但都不起作用.

例如,如果键值是网络或ip 100.100.100.100,下面的逻辑是好的,但当密钥名称是网络交换机或路由器网,它是不移除。

代码语言:javascript
复制
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',
           ];

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-28 17:44:21

代码语言:javascript
复制
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;

代码语言:javascript
复制
100.2.2.3-0-2
100.4.7.1-0-2
100.2.120.2-0-2
100.1.2.29-3-2
switch-1-1
router45
票数 0
EN

Stack Overflow用户

发布于 2014-06-28 18:02:54

!=是数字not equal运算符,但由于要测试字符串不等式,请使用ne运算符

代码语言:javascript
复制
my @array = grep { $_ ne $Key } @array1;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24468838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档