私はオブジェクトのメソッドとして利用できないようにインポートされたシンボルを削除しようとしていますが、no
が機能していないようで、多分私は何かを理解していないか、別の方法があります。私はコアのperlの一部のみ(うん愚かしかしセラヴィが争う)されているモジュールに制限されてきたのでperlで関数をインポートするにはどうしたらいいですか?
use 5.014;
use warnings;
use Test::More;
# still has carp after no carp
package Test0 {
use Carp qw(carp);
sub new {
my $class = shift;
my $self = {};
carp 'good';
bless $self, $class;
return $self;
}
no Carp;
}
my $t0 = Test0->new;
ok(! $t0->can('carp'), 'can not carp');
# below passes correctly
package Test1 {
use Carp qw(carp);
use namespace::autoclean;
sub new {
my $class = shift;
my $self = {};
carp 'good';
bless $self, $class;
return $self;
}
}
my $t1 = Test1->new;
ok(! $t1->can('carp'), 'can not carp');
done_testing;
残念ながら私はnamespace::autocleanを使用することはできません。
namespace::autoclean
を書き直すだけで、これを行う方法はありますか?
なぜnamespace :: auto cleanがこれを行うのですか?それはあなたが望むことをしますが、たとえそれをモジュールとして使用しなくても、それが何かをするのを避けたいのです。なぜなら、まったく理由がないかのように、仕事を簡単にする方法がなければならないからです。 –
@briandfoy私は可能性がありますが、私は単純な方法があるかもしれないと考えました。 – xenoterracide