开发者

Indexing directly into returned array in Perl

This question has b开发者_高级运维een asked about PHP both here and here, and I have the same question for Perl. Given a function that returns a list, is there any way (or what is the best way) to immediately index into it without using a temporary variable?

For example:

my $comma_separated = "a,b,c";
my $a = split (/,/, $comma_separated)[0]; #not valid syntax

I see why the syntax in the second line is invalid, so I'm wondering if there's a way to get the same effect without first assigning the return value to a list and indexing from that.


Just use parentheses to define your list and then index it to pull your desired element(s):

my $a = (split /,/, $comma_separated)[0];


Just like you can do this:

($a, $b, $c) = @array;

You can do this:

my($a) = split /,/, $comma_separated;

my $a on the LHS (left hand side) is treated as scalar context. my($a) is list context. Its a single element list so it gets just the first element returned from split.

It has the added benefit of auto-limiting the split, so there's no wasted work if $comma_separated is large.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜