开发者

What is Perl doing with this argument to push in this case?

开发者 https://www.devze.com 2022-12-24 23:19 出处:网络
I just saw some code in our code base (and it\'s OLD c开发者_如何学Code, as in Perl 3 or Perl 4 days) that looks like this (I\'m simplifying greatly):

I just saw some code in our code base (and it's OLD c开发者_如何学Code, as in Perl 3 or Perl 4 days) that looks like this (I'm simplifying greatly):

 @array;
 push( array, $some_scalar );

Notice that the array in the push() doesn't have an @. I would assume that the code behind push knows that the first argument is supposed to be array so grabs the array from the array typeglob. Is that more or less it? If Perl is able to do that without problem, why would you need to include the @ at all?


This is an old 'feature' of the parser. The @ isn't mandatory in a push if the variable is a package variable. This is considered by many as a bug that ought to be fixed though. You really shouldn't be doing this.


This is a dubious "feature" of perl, deprecated behaviour; it should be an error, but it works.

If you turn on the warnings of the compiler (perl -W, highly recommended), it warns:

Array @aa missing the @ in argument 1 of push() at xx.pl line 2.


Nicholas Clark explains:

That's Perl 1 syntax.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号