Perl匿名列表问题

sno*_*kin 0 perl list

为什么这不起作用?

my $str = 'we,you,them,us';

print $(split($str,','))[0];
Run Code Online (Sandbox Code Playgroud)

我知道我能做到:

my @str = split...
Run Code Online (Sandbox Code Playgroud)

但我记得有一种方法可以跳过它.

谢谢,

jir*_*ira 8

你有反向拆分的参数顺序.在parens前面不应该有美元符号.以下工作(加号强制perl评估以下表达式):

use strict;
use warnings;

my $str = 'we,you,them,us';

print +(split(',',$str))[0];
Run Code Online (Sandbox Code Playgroud)

  • 你有一个行中的四个字符,XYXY,其中第一个Y正在做的事情与第二个Y正在做的事情完全不同但外观相同.这令人困惑.这就是为什么人们在这种情况下切换到一个胖逗号.此外,除了另一个可能的混淆或错误来源之外,领先加上失败的参数只能为您节省一个字符.因此,我建议将最后一行重写为`print((split","=> $ str)[0]);而不是.不是那么*更清晰吗?***我当然这么认为,但你的1⅗·千米可能会有所不同. (3认同)

Eri*_*rom 5

只要您只需要访问函数返回值的一小部分,就应该检查是否可以使用更小的范围函数.在这种情况下,我可能会使用正则表达式:

print $str =~ /^([^,]*)/;
Run Code Online (Sandbox Code Playgroud)