首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这种情况下,Perl如何处理这个参数来进行推送?

在这种情况下,Perl如何处理这个参数来进行推送?
EN

Stack Overflow用户
提问于 2010-03-31 03:11:56
回答 3查看 299关注 0票数 8

我刚刚在我们的代码库中看到了一些代码(这是旧代码,就像在Perl 3或Perl 4中一样),它们看起来像这样(我正在大大简化):

代码语言:javascript
复制
 @array;
 push( array, $some_scalar );

注意,push()中的array没有@。我假设push背后的代码知道第一个参数应该是数组,所以从array typeglob获取数组。这是或多或少的吗?如果Perl能够毫无问题地做到这一点,那么为什么还需要包含@呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-31 03:17:29

这是解析器的一个老“特性”。如果变量是包变量,则@在推送中不是必需的。这被许多人认为是一个错误,应该被修复。你真的不该这么做。

票数 9
EN

Stack Overflow用户

发布于 2010-03-31 03:22:52

这是perl的一个可疑的“特性”,被弃用的行为;它应该是一个错误,但它是有效的。

如果打开编译器的警告(perl -W,强烈推荐),它会发出警告:

代码语言:javascript
复制
Array @aa missing the @ in argument 1 of push() at xx.pl line 2.
票数 4
EN

Stack Overflow用户

发布于 2010-03-31 19:14:46

Nicholas Clark explains

这是Perl1语法的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2547957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档