我有一個perl模塊,我使用MIME :: Base64中的encode_base64函數編寫的。出於某種原因,encode_base64沒有被導出到我的模塊的命名空間。Perl子未導出到模塊
我可能錯過了一些東西,但我希望有人能解釋它是什麼。
這裏是我的模塊:
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";
這使我相信它與模塊子如何導出到其他模塊有關,但我不知道。任何人都可以對此有所瞭解嗎?
當你在'package b64_test;'後面放置'use MIME :: Base64'時會發生什麼? – Zaid