这可以用1或2行写成没有tmp变量吗?

时间:2011-05-04 14:37:24

标签: perl

我有这段代码

my $tmp = $q->param('owner');
$tmp =~ s/\s*//g; # remove white space from string
my @owners     = split ",", $tmp;

哪个有效,但它占用了3行,并且使用临时变量时接缝非常错误。

可以用更少的行完成,没有临时变量吗?

4 个答案:

答案 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;