Страница 1 из 1

[Perl] Импортировать ссылку с анонимной подпрограммой

Добавлено: 2011-03-28 17:40:27
ProFTP
есть модуль

Код: Выделить всё

package Bar;

my $anon_anon = sub {return 666}
я хочу импортировать эту анонимныю подпрограмму с своего скрипта
сам данный модуль отлично сам инициализируется!


я еще давно знаю, что примерно это должно быть так:

Код: Выделить всё

use Bar;
my $pkg = 'Bar';
print Dumper ${${'main::'.$pkg.'::'}{anon_anon}}
полностью:

Код: Выделить всё

foreach (keys(%{'main::'.$pkg.'::'})) {
     ${${'main::'.$pkg.'::'}{$_}}=undef if defined ${${'main::'.$pkg.'::'}{$_}};
    @{${'main::'.$pkg.'::'}{$_}}=undef if defined @{${'main::'.$pkg.'::'}{$_}};
    %{${'main::'.$pkg.'::'}{$_}}=undef if defined %{${'main::'.$pkg.'::'}{$_}};
}
выводит undef
c print Dumper ${${'main::'.$pkg.'::'}{anon_anon}}

если написать так:

Код: Выделить всё

{ 
    no strict 'refs'; 
    foreach my $entry ( keys %main:: ) 
    { 
        print Dumper $entry; 
    } 
} 

то anon_anon я не вижу в выводе, может оно не выводиться по каким-то причинам??

Re: [Perl] Импортировать ссылку с анонимной подпрограммой

Добавлено: 2011-03-28 22:37:52
ProFTP
по идее переменныю которые объявленные как my не могут быть экспортированные от туда...
я это действительно читал, но что-то так и не понял...

Re: [Perl] Импортировать ссылку с анонимной подпрограммой

Добавлено: 2011-03-30 22:22:29
Гость
Ну как бы ман говорит: "A my declares the listed variables to be local (lexically) to the enclosing block, file, or eval". Т.е. никак не вытащить my-переменные из модулей.