【发布时间】:2013-12-08 19:28:51
【问题描述】:
AFAIK,perl 中的括号用于:
- 在表达式中设置计算优先级
- 列出清单
所以,
my $r = ($x+$y) * $z;
my(@l) = (1,2,3);
函数调用中括号的含义是什么?我没有找到,sub 会得到一个简单的参数列表。
#!/usr/bin/env perl
use Modern::Perl;
use Data::Dumper;
sub xxx { say Dumper \@_ }
xxx( 1, 2, 3 );
xxx( 1, (2, 3) );
xxx 1, (2, 3) ;
xxx 1, 2, 3;
对吗?
询问是因为 perl -MO=Deparse 没有从函数调用中删除括号。
所以下一个短脚本
use Moose;
has 'arg' => (is=>'rw', isa=>'Str');
返回
has('arg', ('is', 'rw', 'isa', 'Str'));
而不是简单的
has('arg', 'is', 'rw', 'isa', 'Str');
这里有什么不同吗?
【问题讨论】:
-
只是一个评论:玩括号时,使用
Deparse,-p。
标签: perl