Jaka jest różnica między plikami bibliotek a modułami w Perlu?
3 odpowiedzi
To cały kod Perla do perl
. Wszystkie rozróżnienia są czysto idiomatyczne.
Kod Perla przeznaczony do włączenia, który używa dyrektywy package
:
- Nazywany „modułem”.
- Zwykle ma rozszerzenie
.pm
. Aby je znaleźć, musisz mieć to rozszerzenieuse
. - Powinien być zawsze ładowany za pomocą
require
, prawdopodobnie przezuse
. - Bardziej modułowy, lepiej obsługiwany przez CPAN.
Kod Perla przeznaczony do włączenia, który nie używa dyrektywy package
:
- Nazywana „biblioteką”. (Przynajmniej historycznie. W dzisiejszych czasach słowo „biblioteka” może być również używane w odniesieniu do modułu lub dystrybucji).
- Zwykle ma rozszerzenie
.pl
. - Powinien być zawsze ładowany za pomocą
do
. - Zanieczyszcza przestrzeń nazw rozmówcy.
- Zwykle wskazuje na projekt niespełniający norm. Unikaj tego!
Kod Perla przeznaczony do bezpośredniego wykonania przez interpreter:
- Nazywany „skryptem”.
- Zwykle ma rozszerzenie
.pl
lub wcale. - Prawdopodobnie rozpocznie się od linii shebang (
#!
), aby można je było rozpocząć bez określaniaperl
.
Pliki biblioteki (zakładam, że masz na myśli require 'foo.pl'
rzeczy tutaj) są przestarzałą (przed Perlem 5) formą modułu zewnętrznego. W większości przypadków nie powinieneś się już tym przejmować, chociaż nadal istnieją niektóre instalacje Perla 4, a zatem wciąż jakiś kod Perla, który pozostaje z nimi wstecznie kompatybilny (i jest trochę kodu, który jest po prostu nigdy nie został zaktualizowany i nadal ładuje getcwd.pl
itd.).
Nic. Oba są plikami zawierającymi kod Perla. Oto jednak niektóre z możliwych różnic okoliczności.
- Plik wykonywalny perla z większym prawdopodobieństwem będzie miał shbang
#!/bin/perl
. - Stare
.pl
biblioteki Perla (stąd 'p' + 'l') są prawdopodobnie wymagane niż moduły.pm
. - Moduły w stylu Perla 5 (
.pm
) częściej używająExporter
- chociaż jeszcze nowsze moduły unikają eksportowania czegokolwiek.
Podobne pytania
Powiązane pytania
Nowe pytania
perl
Perl to proceduralny, wysokopoziomowy, dynamiczny język programowania ogólnego przeznaczenia, znany z natywnej obsługi wyrażeń regularnych i możliwości analizowania ciągów. Użyj tego tagu w przypadku ogólnych pytań dotyczących Perla. W przypadku rzeczy związanych z nowym (ale pokrewnym) językiem Raku (dawniej „Perl 6”), użyj tagu raku. W przypadku wyrażeń regularnych w stylu Perla w innych językach użyj znacznika regex lub, jeśli są one oparte na bibliotece PCRE, znacznika pcre.
.pl
zwykle tego nie robi..pm
(tj. pliki z dyrektywąpackage
) należy zawsze ładować za pomocąrequire
, prawdopodobnie za pośrednictwemuse
..pl
(tj. pliki bez dyrektywypackage
) należy zawsze ładować za pomocądo
.do
)? A może to raczej pytanie, jeśli miałeś plik .pl. 2) Dyrektywa Package nie wchodzi w to, gdy mówimy o typach plików, ale z tych dwóch -- bardziej prawdopodobne jest, że plik .pm definiuje pakiet niż plik .pl. Tak więc jest to również w duchu różnicy praktyki w tworzeniu dwóch typów plików. Znowu sugerowana praktyka różni się od de facto--lub charakterystycznej--praktyki--z mojego doświadczenia z plikami .pl--nigdy nie widziałem kogośdo
ich--celowości pomimo .package
, a zatem spodziewałbym się, że będę mógł go załadować za pomocąrequire
. Ja też bardziej oczekiwałbym, że plik .pm definiuje pakiet niż plik .pl, dlatego powiedziałem, że .pm powinien być zawsze ładowany za pomocąrequire
i dlaczego powiedziałem, że .pl nigdy nie powinien być ładowany za pomocąrequire
.