Po pierwsze, uważam, że warto korzystać z załączając szelki kontrolować zasięg przy pakowaniu wielu pakietów do jednego pliku. Dołączenie paczki do bloku BEGIN powoduje, że działa ona bardziej jak właściwy plik, który został użyty do załadowania go, ale jest to głównie wtedy, gdy pakuję pakiet do głównego skryptu.
use Foo
jest taki sam jak BEGIN { require Foo; Foo->import }
.
Tak, masz dwie możliwości:
- połączeń
BEGIN{ Foo::Whizzy->import; }
w głównym skrypcie.
- wywołanie
Foo::Bar::import
wyzwalacza Foo::Whizzy::import
na module wywołującym.
W Foo/Bar.pm:
{ package Foo::Bar;
use Exporter qw(export_to_level);
# Special custom import. Not needed if you call Foo::Whizzy->import
sub import {
shift;
export_to_level('Foo::Whizzy', 1, @_);
}
# stuff
# stuff
}
{ package Foo::Whizzy;
require Exporter;
our @ISA=qw(Exporter);
our @EXPORT=qw(x);
use constant { x=>1 };
}
1; # return true
w głównym kodzie:
use Foo::Bar;
# If you don't do a custom import for Foo::Bar, add this line:
BEGIN { Foo::Whizzy->import };
thx wszystkim - konsensus wydaje - wykorzystanie 2 pliki właśnie lenistwo i obiecuję powiedzieć Foo nie foo – pm100
W tym przypadku będę upvote cię! :) – Ether