从Perl中包含空字符或空白字符的数组中删除元素

从Perl中包含空字符或空白字符的数组中删除元素,perl,dictionary,grep,Perl,Dictionary,Grep,我想使用map或grep将数组@x转换为数组@y @x = ('aa','', 'bb',' ','cc', "\t"); @y = ('aa','bb','cc'); 我所尝试的: #@x= grep {s/^\s+|\s+$//g} @x; # not correct @y = grep { $_ } @x; # remove '' null character 请建议更好的方法,最好是一行 第一个grep就足够了,但在grep中进行替换似乎很奇怪,最好使用map。将grep视

我想使用map或grep将数组@x转换为数组@y

@x = ('aa','', 'bb','    ','cc', "\t");
@y = ('aa','bb','cc');
我所尝试的:

#@x= grep {s/^\s+|\s+$//g} @x;  # not correct
@y = grep { $_ } @x;  # remove '' null character
请建议更好的方法,最好是一行

第一个grep就足够了,但在grep中进行替换似乎很奇怪,最好使用map。将grep视为过滤器。 请参见perlcritic对grep中替代的“想法”:

$perlcritic-5 test.pl test.pl:不要在第6行第6列的列表函数中修改$。 见PBP第114页。严重性:5,策略: ControlStructures::ProhibitMutatingListFunctions

5是最宽松的,最佳实践是至少应用此级别或更低级别

始终严格使用;使用警告;接近Perl程序的开始

在grep中放入$以输出某些内容:grep{s/^\s+|\s+$//g;$} 最后:

use strict; use warnings;

my @x = ('aa','', 'bb','    ','cc', '\t');
my @y = ('aa','bb','cc');

@x = grep {s/^\s+|\s+$//g; $_ } @x;
print join "\n", @x;
但是grep可以简单地写成

grep { /\S/ } @x
输出: 第一个grep就足够了,但在grep中进行替换似乎很奇怪,最好使用map。将grep视为过滤器。 请参见perlcritic对grep中替代的“想法”:

$perlcritic-5 test.pl test.pl:不要在第6行第6列的列表函数中修改$。 见PBP第114页。严重性:5,策略: ControlStructures::ProhibitMutatingListFunctions

5是最宽松的,最佳实践是至少应用此级别或更低级别

始终严格使用;使用警告;接近Perl程序的开始

在grep中放入$以输出某些内容:grep{s/^\s+|\s+$//g;$} 最后:

use strict; use warnings;

my @x = ('aa','', 'bb','    ','cc', '\t');
my @y = ('aa','bb','cc');

@x = grep {s/^\s+|\s+$//g; $_ } @x;
print join "\n", @x;
但是grep可以简单地写成

grep { /\S/ } @x
输出:
在我看来,你只是想

@y = grep /\S/, @x;

在我看来,你只是想

@y = grep /\S/, @x;

请显示这两次尝试的结果。请显示这两次尝试的结果。在grep中进行替换对于这样一个简单的操作来说似乎有点复杂;为什么不仅仅是grep{/\S/}或类似的东西呢?操作代码有副作用,因为grep别名为$\但他可能没有意识到在grep中进行替换对于这样一个简单的操作来说似乎有点复杂;为什么不仅仅是grep{/\S/}或类似的东西呢?操作代码有副作用,因为grep别名是$\但他可能没有意识到这一点