Можно ли это написать в 1 или 2 строки без переменной tmp? - PullRequest
2 голосов
/ 04 мая 2011

У меня есть этот код

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

, который работает, но занимает 3 строки, и очень неправильно использовать временную переменную.

Можно ли сделать это в меньшем количестве строка без временной переменной?

Ответы [ 4 ]

9 голосов
/ 04 мая 2011

Я бы написал так:

my @owners = map { s/\s*//g; $_ } split ",", $q->param('owner');

Поскольку вы убираете все пробелы, не имеет значения, делаете ли вы это для ввода или для списка.

Конечно, я использую map -подстановочные замены достаточно часто, поэтому у меня есть сабвуфер под названием filter, который выглядит так: filter { s/\s*//g } ..., который в основном такой же.

1 голос
/ 04 мая 2011
my @owners = split /\s*,\s*/, $q->param('owner');
0 голосов
/ 04 мая 2011
my @owners = $q->param( 'owner' ) =~ m{([^,\s]+)}g;
0 голосов
/ 04 мая 2011

Вы можете использовать:

my @owners = split(/\s*,\s*/, $q->param('owner');

Но у вас все еще будут пробелы, которые не находятся вокруг ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...