Мой предыдущий вопрос решил мою проблему, но оставил меня с недостатком понимания.
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'), 'cannot carp');
Этот тест не проходит, что означает, что no ...
не делает то, что я думаю, что он делает, что включает в себя невозвращение символов. Я читал perldoc no
, но это действительно кажется довольно непрозрачным. Учитывая результаты этого кода, я бы сказал, что он точно не делает то, что он рекламирует.
Что делает no
? Когда и почему я должен его использовать?