而不是写:
@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的参数; 将括号括在所有参数周围(或插入一个
+,但看起来不那么好).
在上面的例子中,我发现这种情况+更易于编写和阅读.因人而异.