Arrays 如何从perl数组中删除长元素?

Arrays 如何从perl数组中删除长元素?,arrays,perl,grep,Arrays,Perl,Grep,我有一个perl数组,它的长度不应该超过20个字符。不过,偶尔会错误地输入较长的字符串 如何“清除”这些较长字符串的perl数组?有没有办法缩短长度?类似于 @blurbs = grep([size<=20],@blurbs); @blurbs=grep([sizelength获取字符串的长度 @blurbs = grep { length($_) <= 20 } @blurbs; 另一种方法是使用 以下是一个例子: my @clean = map { length($_) &l

我有一个perl数组,它的长度不应该超过20个字符。不过,偶尔会错误地输入较长的字符串

如何“清除”这些较长字符串的perl数组?有没有办法缩短长度?类似于

@blurbs = grep([size<=20],@blurbs);

@blurbs=grep([size
length
获取字符串的长度

@blurbs = grep { length($_) <= 20 } @blurbs;

另一种方法是使用

以下是一个例子:

my @clean = map { length($_) <= 20 ? $_ : () } @blurbs;

my@clean=map{length($\)嗯,这不是一个很好的
map
的用法。你应该使用
grep
来过滤列表,然后使用
map
来转换列表。这个
map
读起来有点混乱,因为它只实现了一个长度过滤器。@friedo Fair。我想我是在打高尔夫。这对高尔夫也不好;
grep
也使用较少的笔划。也就是说,当你做的不仅仅是grepping时,这种grepping方法很有用。例如,
map-uc,grep-cond($),@a
可以写
map-cond($)?uc:(),@a
。不过,为了可读性,我会使用前者。