Ответ 1
Просто используйте круглые скобки, чтобы определить свой список, а затем проиндексируйте его, чтобы вытащить нужный элемент (ы):
my $a = (split /,/, $comma_separated)[0];
Этот вопрос был задан о PHP как здесь и здесь, и у меня есть тот же вопрос для Perl. Учитывая функцию, которая возвращает список, есть ли способ (или лучший способ) немедленно индексировать его без использования временной переменной?
Например:
my $comma_separated = "a,b,c";
my $a = split (/,/, $comma_separated)[0]; #not valid syntax
Я понимаю, почему синтаксис во второй строке недействителен, поэтому мне интересно, есть ли способ получить тот же эффект без первоначального присвоения возвращаемого значения списку и индексации из него.
Просто используйте круглые скобки, чтобы определить свой список, а затем проиндексируйте его, чтобы вытащить нужный элемент (ы):
my $a = (split /,/, $comma_separated)[0];
Как вы можете это сделать:
($a, $b, $c) = @array;
Вы можете сделать это:
my($a) = split /,/, $comma_separated;
my $a
на LHS (левая сторона) рассматривается как скалярный контекст. my($a)
- это контекст списка. Его единственный список элементов, поэтому он получает только первый элемент, возвращенный из split
.
У этого есть дополнительное преимущество автоматического ограничения разделения, поэтому нет никакой расточительной работы, если $comma_separated
велико.