You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:32:50