这个问题已被问及PHP here和here,我对Perl也有同样的问题。给定一个返回列表的函数,有没有办法(或者什么是最好的方法)在不使用临时变量的情况下立即索引它?
例如:
my $comma_separated = "a,b,c";
my $a = split (/,/, $comma_separated)[0]; #not valid syntax
我明白为什么第二行的语法无效,所以我想知道是否有办法在没有先将返回值分配给列表并从中索引的情况下获得相同的效果。
答案 0 :(得分:26)
只需使用括号来定义列表,然后将其编入索引以拉出所需的元素:
my $a = (split /,/, $comma_separated)[0];
答案 1 :(得分:8)
就像你可以这样做:
($a, $b, $c) = @array;
你可以这样做:
my($a) = split /,/, $comma_separated;
LHS(左侧)上的 my $a
被视为标量上下文。 my($a)
是列表上下文。它是一个单独的元素列表,因此它只获得从split
返回的第一个元素。
它具有自动限制拆分的额外好处,因此如果$comma_separated
很大,则不会浪费工作。