我刚刚在我们的代码库中看到了一些代码(这是旧代码,就像在Perl 3或Perl 4中一样),它们看起来像这样(我正在大大简化):
@array;
push( array, $some_scalar );注意,push()中的array没有@。我假设push背后的代码知道第一个参数应该是数组,所以从array typeglob获取数组。这是或多或少的吗?如果Perl能够毫无问题地做到这一点,那么为什么还需要包含@呢?
发布于 2010-03-31 03:17:29
这是解析器的一个老“特性”。如果变量是包变量,则@在推送中不是必需的。这被许多人认为是一个错误,应该被修复。你真的不该这么做。
发布于 2010-03-31 03:22:52
这是perl的一个可疑的“特性”,被弃用的行为;它应该是一个错误,但它是有效的。
如果打开编译器的警告(perl -W,强烈推荐),它会发出警告:
Array @aa missing the @ in argument 1 of push() at xx.pl line 2.发布于 2010-03-31 19:14:46
Nicholas Clark explains
这是Perl1语法的
。
https://stackoverflow.com/questions/2547957
复制相似问题