是否有一个单线来获得分裂的第一个元素?

use*_*479 26 perl

而不是写:

@holder = split /\./,"hello.world"; 
print @holder[0];
Run Code Online (Sandbox Code Playgroud)

是否可以只做一个单行来获得分裂的第一个元素?就像是:

print (split /\./,"hello.world")[0]
Run Code Online (Sandbox Code Playgroud)

当我尝试第二个例子时,我收到以下错误:

print (...) interpreted as function at test.pl line 3.
syntax error at test.pl line 3, near ")["
Run Code Online (Sandbox Code Playgroud)

Gre*_*con 64

你应该试试你的预感.这是怎么做的.

my $first = (split /\./, "hello.world")[0];
Run Code Online (Sandbox Code Playgroud)

您可以使用仅捕获第一个字段的列表上下文分配.

my($first) = split /\./, "hello.world";
Run Code Online (Sandbox Code Playgroud)

要打印它,请使用

print +(split /\./, "hello.world")[0], "\n";
Run Code Online (Sandbox Code Playgroud)

要么

print ((split(/\./, "hello.world"))[0], "\n");
Run Code Online (Sandbox Code Playgroud)

由于语法模糊,加号是存在的.它表示以下所有内容都是参数print.在perlfunc文档的print解释.

注意不要使用左括号跟随print关键字,除非您希望相应的右括号终止print的参数; 将括号括在所有参数周围(或插入一个+,但看起来不那么好).

在上面的例子中,我发现这种情况+更易于编写和阅读.因人而异.