Jestem prawie pewien, że przeczytałem gdzieś, że jest to możliwe, ale jest kilka gier, o których musisz wiedzieć. Niestety nie mogę znaleźć samouczka ani strony opisującej, co musisz zrobić. Przejrzałem numer Perl tutorials i nie znalazłem tego, który pamiętam. Czy ktoś mógłby wskazać mi stronę lub dokument opisujący, jak umieścić wiele pakietów w pojedynczym pliku .pm?W Perlu, jak umieścić wiele pakietów w jednym pliku .pm?
Odpowiedz
po prostu rozpocząć nowy pakiet z innego rachunku pakietu:
package PackageOne;
# ...... code
package PackageTwo;
# .... more code
Jak to zrobić: wystarczy wydać kilka package
instrukcjami.
Gotchas Mogę myśleć: my
-zmienne nie są zlokalizowane w pakiecie, więc i tak są udostępniane. Przed wydaniem, domyślnie znajdujesz się w pakiecie main
.
To jest jak zwykle zrobić go:
use strict;
use warnings;
use 5.010;
{
package A;
sub new { my $class = shift; bless \$class => $class }
sub hello { say 'hello from A' }
}
{
package B;
use Data::Dumper;
sub new { my $class = shift; bless { @_ } => $class }
sub hello { say 'Hello from B + ' . shift->dump }
sub dump { Dumper $_[0] }
}
$_->hello for A->new, B->new(foo => 'bar');
Jaki zakres bloków jest dobry, jeśli pakiet definiuje już swój zakres? – ceving
@ceving - Z tego samego powodu, dla którego 'pakiet' został zmieniony w perlu 5.14, aby teraz zezwolić na następującą składnię:' package A {...} '. NB. Jest to to samo co '{package A; ...} '). W ten sposób unikniesz * gotchów *, które możesz uzyskać za pomocą takich rzeczy jak 'my' &' our'. ref: http://perldoc.perl.org/5.14.0/functions/package.html – draegtun
To co pracował dla mnie:
#!/usr/bin/perl
use strict;
use warnings;
{
package A;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(a_sub);
our @EXPORT = qw(a_sub);
sub a_sub {
# your code ...
}
}
{
package B;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(b_sub);
our @EXPORT = qw(b_sub);
sub b_sub {
# your code ...
}
}
# Main code starts here ##############
use boolean;
use Data::Dumper;
import A qw(a_sub);
import B qw(b_sub);
a_sub();
b_sub();
Ważną rzeczą jest to, że zamiast używać „użytkowania”, należy zmienić go na " import "(w ten sposób nie pójdzie i spróbuje poszukać pliku).
Moje podejście było podobne, właśnie zmieniłem '{package A; ...} 'to' package A {...} '. –
- 1. Jak umieścić wiele rozmiarów widżetów w jednym apk?
- 2. Jak obsługiwać wiele prywatnych pakietów npm w jednym reporze git?
- 3. Wiele klas wyrażeń w jednym pliku Java
- 4. Wiele klas w jednym pliku .cpp
- 5. Jak zainstalować wiele pakietów?
- 6. Jak zdefiniować wiele zapytań o media w jednym pliku rysika?
- 7. Wiele pakietów parametrów - jak?
- 8. Cały kod w jednym pliku
- 9. Jak wstawić wiele białych znaków w Perlu?
- 10. Jak zainstalować wiele plików z jednym zasobem pliku
- 11. Wiele plików package.json w jednym pakiecie
- 12. Jak umieścić wiele danych w kolumnie danych?
- 13. Wiele SELECT w jednym zapytaniu
- 14. Wiele PickerViews w jednym widoku?
- 15. Wiele UICollectionView w jednym kontrolerze
- 16. Wiele repozytoriów w jednym katalogu
- 17. Jak uruchomić wiele poleceń w jednym wierszu?
- 18. Siatka, jak mieć wiele kolumn w jednym
- 19. Jak dodać wiele funkcji w JEDNYM kliknięciu?
- 20. Jak wykonać wiele poleceń w jednym wierszu
- 21. Jak wyświetlić wiele filmów w jednym widoku?
- 22. Wiele kolumn w jednym StaggeredGridView?
- 23. document.querySelector wiele atrybuty danych w jednym elemencie
- 24. Wiele repozytoriów maven w jednym gradle file
- 25. Jak mogę umieścić wiele linii tekstu w obiekcie NSMenuItem?
- 26. Wiele stylów w jednym widoku w Drupal
- 27. Jak umieścić wiele komponentów w pojedynczej komórce h: panelGrid
- 28. Jak umieścić/uzyskać wiele JSONObjectów dla JSONArray?
- 29. Wiele pakietów HD
- 30. python i XML: jak umieścić dwa dokumenty w jednym dokumencie
Jestem prawie pewien, że w artykule, który przeczytałem, było kilka innych rzeczy, które musieliście zrobić lub problemy, które mogą pojawić się przy określaniu zakresu. –
oczywiście będą problemy z zakresu i dlatego nie jest zalecane, zobacz link dodałem. – ennuikiller
Możesz "używać" pakietu o nazwie odpowiadającej nazwie pliku i możesz tylko (łatwo) "użyć" pliku zawierającego pakiet odpowiadający jego nazwie. Poza tym i faktem, że leksykony o zasięgu plików będą "przeciekać" do następnego pakietu (można tego uniknąć, dodając nawiasy klamrowe), nie trzeba wiele wiedzieć. – hobbs