如何打印返回列表的Perl表达式的第n个元素?

qlzsbp2j  于 2023-02-05  发布在  Perl
关注(0)|答案(2)|浏览(129)

我试着得到第一个元素

$object->method()

返回一个列表。
我的第一个想法是尝试:

$object->method()[0]

但我得到这个错误:

syntax error at script.pl line 8, near ")["
Execution of script.pl aborted due to compilation errors.

所以我试着

print ($object->method())[0];

但是Perl "吃掉"了用于print的( ),并且仍然有错误。
我需要做的是

print((object->method())[0]);

有更简单的方法吗?

pkln4tw6

pkln4tw61#

它是Perl,所以有很多特殊的技巧可以做到这一点。

print [$object->method()]->[0]

换另一个。

yyyllmsg

yyyllmsg2#

有一个特殊的技巧来做到这一点:

print +($object->method())[0]

perldoc perlfunc开始:
下表中的任何函数都可以在其参数周围使用或不使用括号。(语法描述省略了括号。)如果使用括号,则会出现一个简单但偶尔令人惊讶的规则:它看起来像一个函数,因此它一个函数,优先级无关紧要;否则它是一个列表运算符或一元运算符,优先级就有关系;函数和左括号之间的空格不算在内,所以有时候你需要小心:

print 1+2+4;      # Prints 7.
    print(1+2) + 4;   # Prints 3.
    print (1+2)+4;    # Also prints 3!
    print +(1+2)+4;   # Prints 7.
    print ((1+2)+4);  # Prints 7.

来自#perl@libera IRC:

相关问题