咨询Perl子例程不可变参数示例对应的Perl版本
问题解答
那个示例依赖的是Perl 5.20及以上版本引入的**子例程签名(Subroutine Signatures)**特性,不过需要注意:
- 在Perl 5.20到5.30版本区间内,该特性属于实验性功能,默认并未启用,必须在代码开头添加以下声明之一才能生效:
use v5.20;(指定使用Perl 5.20及以上的语言特性)use feature 'signatures';(单独启用子例程签名特性)
你使用的Perl 5.26.3本身支持该特性,但原示例代码缺少启用声明,所以直接运行会报错。补充启用声明后,代码就能正常触发"Cannot assign to an immutable value"的错误——因为子例程签名中定义的参数默认是不可变的,无法直接修改。
修正后的示例代码如下:
#!/usr/bin/perl use v5.20; # 启用子例程签名特性 # Function Definition sub Func(Int $variable) { # Operation to be performed $variable /= 2; } # Defining a local variable my $value = 20; # Function Call with local variable print Func($value);
内容的提问来源于stack exchange,提问作者Shiping
相关产品推荐
相关产品推荐

