Perl匿名列表问题

Perl匿名列表问题,perl,list,Perl,List,为什么这不起作用 my $str = 'we,you,them,us'; print $(split($str,','))[0]; 我知道我能做到: my @str = split... 但我记得有一种方法可以跳过它 谢谢,您有拆分反向的参数顺序。父母面前不应该有美元标志。以下工作(加号强制perl将以下内容作为表达式计算): 使用[split$str',',]->[0]就可以了。任何时候只要访问函数返回值的一小部分,就应该检查是否有范围较小的函数可以使用。在这种情况下,我可能会使用正则表

为什么这不起作用

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

print $(split($str,','))[0];
我知道我能做到:

my @str = split...
但我记得有一种方法可以跳过它


谢谢,

您有拆分反向的参数顺序。父母面前不应该有美元标志。以下工作(加号强制perl将以下内容作为表达式计算):


使用
[split$str',',]->[0]
就可以了。

任何时候只要访问函数返回值的一小部分,就应该检查是否有范围较小的函数可以使用。在这种情况下,我可能会使用正则表达式:

print $str =~ /^([^,]*)/;

一行中有四个字符XYXY,其中第一个Y所做的与第二个Y所做的完全不同,但外观相同。这令人困惑。这就是为什么人们在这种情况下会使用大逗号。此外,前导的加号到挫败论点只为您节省了一个字符,而另一个可能的混淆或错误来源则是以这个为代价的。因此,我建议将最后一行改写为
print((split“,”=>$str)[0])取而代之。这不是更清晰吗?我当然这么认为,但是你的⅗·公里数可能会有所不同。谢谢!我在哪里能读到这些东西?一直在perltoc sub手册页中查找,但找不到任何相关内容。@soulSurfer2010:了解什么?最好的办法是chdir到pod目录,grep liberally.FWIW,@tchrist,你的版本会让我更困惑。在数学中,符号
=>
是“results In”运算符。这使得在创建散列时使用胖逗号对我来说很有意义,键
=>
(结果)值。虽然您确实正确地认为可以使用此方法删除XYXotherY问题,但是
((拆分(/,/,$a))[0])
也不起作用,现在有了XYX otherY(在otherY之前注意空格),我甚至无法编译它。如果
$(…)
可以为某些东西工作,那么您可能得到的不是您所期望的东西。但这是一个语言不能以这种方式工作的例子。您可能从标量解引用括号
${…}
中得到了一些东西。更重要的是,它在
$中寻找“我们、你、他们、我们”,却没有找到它。要拆分的是第二个参数,分隔符是第一个参数。
print $str =~ /^([^,]*)/;