关于子例程有什么区别,Perl 5.22和以前的*原型?

2022-01-30 14:44:58 标签 perl

我阅读了关于更改*原型的Perl文档

对原型的更改

子例程原型中的*字符,用于允许裸语优先于大多数(但不是所有)子例程名称。它从来都不一致,并且表现出bug行为。

现在它已经改变,所以子例程总是优先于barewords,这使它与类似的原型内置函数一致

代码示例:

sub splat(*) { ... }
sub foo { ... }
splat(foo); # now always splat(foo())
splat(bar); # still splat('bar') as before
close(foo); # close(foo())
close(bar); # close('bar')

有人能给我解释一下它们的区别吗?谢谢你的帮助。

###所有的perldelta条目是在说明,当foo()是一个预定义函数,那么在5。22之前调用splat(foo)可能已经被解析器解释为splat(foo())或splat('foo'),但你不容易分辨。现在它将总是被视为splat(foo())。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码