Что на самом деле делает ключевое слово `no `в 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'), 'cannot carp');

Этот тест не проходит, что означает, что no...не делает того, что, как мне кажется, он делает, включая отмену импорта символов. Я читалperldoc no, но это действительно кажется довольно скучным. Учитывая результаты этого кода, я бы сказал, что он не совсем делает то, что рекламирует.

Что делает no? Когда и почему я должен использовать его?

12
задан Community 23 May 2017 в 12:18
поделиться