一般来说,两者有什么区别?
my $call = Module->new();
和
my $call = Module->new;
一般来说,第一个要长两个字符。具体来说也是。
它们是写同一件事的不同方法。
它们在功能上是相同的。
但是,在调用执行操作的方法时,我已经开始使用可选括号,而在返回属性时不使用它们。
my $n = $foo->n_elements;
$foo->populate_table();
如果根据括号的存在与否对对象的元素进行运行时搜索,则您的问题是有效的。考虑这种情况,如果没有 (),则假设该特定元素是一个变量,当有 () 时,我们正在搜索一个函数。但是在运行时不存在这样的区别。所有元素都被存储,无论你是否使用(),所有元素都会被扫描。因此从逻辑上讲,没有区别,但是从维护的角度来看,这对于任何处理相同代码的人来识别它是基于 () 的变量还是函数将有很大帮助。