У меня есть модуль perl, который я написал, который использует функцию encode_base64 из MIME :: Base64. По какой-то причине encode_base64 не экспортируется в пространство имен моего модуля.Perl sub не экспортируется в модуль
Возможно, у меня что-то не хватает, но я надеюсь, что кто-то сможет объяснить, что это такое.
Вот мой модуль:
use strict;
use Exporter;
use MIME::Base64;
package b64_test;
BEGIN {
our $VERSION = 1.00;
our @ISA = qw(Exporter);
our @EXPORT = qw(enc);
}
sub enc {
my $msg = shift;
my $encoded = encode_base64($msg);
print $encoded . "\n";
}
1;
Я использую этот модуль в моем тестовом скрипте здесь:
#!/usr/bin/env perl
use lib '..';
use b64_test;
my $str = "Test";
enc($str);
Когда я звоню тестовый скрипт я получаю Undefined subroutine &b64_test::encode_base64 called at b64_test.pm line 18.
Чтобы убедиться, не было ничего плохого в моей машине, я сделал еще один тестовый скрипт, который использует MIME :: Base64, и этот работает отлично:
#!/usr/bin/env perl
use MIME::Base64;
my $encoded = encode_base64("TEST");
print $encoded . "\n";
Это заставляет меня думать, что это имеет какое-то отношение к тому, как модули подключаются к другим модулям, но я не знаю. Может кто-нибудь пролить некоторый свет на это?
Что происходит, когда вы помещаете 'use MIME :: Base64;' после 'package b64_test;'? – Zaid