perl – 任何人都可以向我解释这个只读的例外情况吗?
发布时间:2020-12-15 21:44:56 所属栏目:大数据 来源:网络整理
导读:下面是我的代码(不要担心模块顶部有USUW) 我正在测试数组引用是否是只读的,如果是这种情况,那么我将它复制到另一个数组引用.测试显示该数组不是只读的,但是当它运行时,它会因该错误而失败. (对于那些不熟悉我或 Smart::Comments 的人 – 那些###是 Smart::Co
下面是我的代码(不要担心模块顶部有USUW)
我正在测试数组引用是否是只读的,如果是这种情况,那么我将它复制到另一个数组引用.测试显示该数组不是只读的,但是当它运行时,它会因该错误而失败. (对于那些不熟悉我或 ### readonly( $arg_ref ) : readonly( $arg_ref ) ### readonly( @$arg_ref ) : readonly( @$arg_ref ) my @ro = map { readonly( $_ ) } @$arg_ref; ### @ro if ( readonly $arg_ref ) { $arg_ref = [ @$arg_ref ]; } return map { my $val = shift @$arg_ref; $_ => $val } @_ ; 这是我得到的输出: ### readonly( $arg_ref ) : 0 ### readonly( @$arg_ref ) : 0 ### @ro: [ ### 0,### 0,### 0 ### ] 但这是错误: Modification of a read-only value attempted at ....pm line 247. (247是: return map { my $val = shift @$arg_ref; ) 有没有人对这个问题有所了解?我们正在运行Perl 5.8.7.有关如何解决它的任何想法? 解决方法
它看起来不像
Scalar::Util::readonly的结果可以信任使用你想如何使用它.见证人:
perl -MScalar::Util=readonly -MReadonly -wle' Readonly my $arg_ref => [ qw(a b c)]; print readonly $arg_ref; $arg_ref = 1;' 打印: 0 Modification of a read-only value attempted at -e line 1. (使用Readonly 1.03,Scalar :: Util 1.23在perl5.8.8下测试) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |