我希望我能做這樣的事情:
p.pl:
package Common;
use strict;
use warnings;
use experimental qw(signatures);
use Exporter qw(import);
our @EXPORT = qw(NA);
sub NA() { "NA" }
package Main;
use feature qw(say);
use strict;
use warnings;
use experimental qw(signatures);
Common->import();
say "Main: ", NA();
my $client = Client->new();
$client->run();
package Client;
use feature qw(say);
use strict;
use warnings;
use experimental qw(signatures);
Common->import();
sub run($self) {
say "Client: ", NA();
}
sub new( $class, %args ) { bless \%args, $class }
在同一檔案中的兩個包之間共享公共符號。但是運行此腳本會給出:
$ perl p.pl
Main: NA
Undefined subroutine &Client::NA called at ./p.pl line 30.
我在這里想念什么?
uj5u.com熱心網友回復:
問題是你打電話
$client->run();
前
Common->import();
行內模塊的簡單方法:
BEGIN {
package Common;
use strict;
use warnings;
use experimental qw(signatures);
use Exporter qw(import);
our @EXPORT = qw(NA);
sub NA() { "NA" }
$INC{"Common.pm"} = 1;
}
然后就可以use Common;正常使用了。
這并不完美。掛鉤@INCApp::FatPacker 確實提供了最好的結果。但它會讓你的生活更輕松。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/434778.html
標籤:perl
