我有这段代码
my $tmp = $q->param('owner');
$tmp =~ s/\s*//g; # remove white space from string
my @owners = split ",", $tmp;
哪个有效,但它占用了3行,并且使用临时变量时接缝非常错误。
可以用更少的行完成,没有临时变量吗?
答案 0 :(得分:9)
我会这样写:
my @owners = map { s/\s*//g; $_ } split ",", $q->param('owner');
由于你把所有的空格都取出来,无论你是对输入还是列表都没有关系。
当然,我经常使用map
- ped替换,我有一个名为filter
的子,看起来像这个filter { s/\s*//g } ...
基本相同。
答案 1 :(得分:1)
my @owners = split /\s*,\s*/, $q->param('owner');
答案 2 :(得分:0)
您可以使用:
my @owners = split(/\s*,\s*/, $q->param('owner');
但您仍然会有不在,
答案 3 :(得分:0)
my @owners = $q->param( 'owner' ) =~ m{([^,\s]+)}g;