Arrays 如何从perl数组中删除长元素?
我有一个perl数组,它的长度不应该超过20个字符。不过,偶尔会错误地输入较长的字符串 如何“清除”这些较长字符串的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
@blurbs = grep([size<=20],@blurbs);
@blurbs=grep([sizelength
获取字符串的长度
@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
。不过,为了可读性,我会使用前者。