そこで、新しい perl をサポートするために、他の人によって書かれたいくつかの古いテスト モジュールをアップグレードしようとしています。一部のテストでは Test::MockObject::Extends を使用していますが、次のコードを実行するとエラーが発生することがわかりました。
#!/usr/bin/env perl
package MyModule;
use strict;
use warnings;
use fields qw(field1 field2);
sub new {
my $self = shift;
unless (ref $self) {
$self = fields::new($self);
}
return $self;
}
package main;
use strict;
use warnings;
use Test::MockObject::Extends;
use Data::Dumper;
my $VAR1 = MyModule->new();
print Data::Dumper::Dumper($VAR1);
my $VAR2 = Test::MockObject::Extends->new($VAR1);
エラー:
$ perl a
$VAR1 = bless( {}, 'MyModule' );
Modification of a read-only value attempted at /usr/local/share/perl/5.14.2/Test/MockObject/Extends.pm line 31.
私は Test::MockObject と perl 5.10 の変更ログを調べましたが、これが直接の原因になっているように見えるものは何も見当たりません。しばらく壊れていたのではないかと思います.5.10の新しい何かがそれを照らしました.