Estoy tratando de eliminar los símbolos que se importan para que no estén disponibles como métodos en el objeto, pero no
no parece funcionar, tal vez no entiendo no, o hay otra manera.¿Cómo desactivo una función en 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;
lamentablemente no puedo usar namespace::autoclean porque he estado restringido a los módulos que son sólo una parte del núcleo de Perl (sí estúpida, pero c'est la vie).
sin solo reescribir namespace::autoclean
¿hay alguna manera de hacerlo?
¿Por qué no puedes hacer qué namespace :: auto clean hace esto? Hace lo que quiere, pero incluso sin usarlo como módulo, quiere evitar hacer lo que hace, como si existiera sin una buena razón, ya que debe haber una forma más sencilla de hacer el trabajo. –
@briandfoy es posible que yo pudiera, pero pensé que podría haber una manera más simple. – xenoterracide