Im Kern macht die von Ihnen verwendete Dateierweiterung keinen Unterschied, wie perldiese Dateien interpretiert werden.
Das Einfügen von Modulen in .pmDateien, die einer bestimmten Verzeichnisstruktur folgen, die dem Paketnamen folgt, bietet jedoch eine Annehmlichkeit. Also, wenn Sie ein Modul haben Example::Plot::FourDund setzen Sie es in einem Verzeichnis Example/Plot/FourD.pmin einem Pfad in Ihrem @INC, dann useund requiredas Richtige tun , wenn Sie den Paketnamen als in gegeben use Example::Plot::FourD.
Die Datei muss als letzte Anweisung true zurückgeben, um die erfolgreiche Ausführung eines Initialisierungscodes anzuzeigen. Daher ist es üblich, eine solche Datei mit zu beenden 1; , es sei denn, Sie sind sicher, dass sie andernfalls true zurückgibt. Aber es ist besser, nur das zu setzen 1;, falls Sie weitere Anweisungen hinzufügen.
Wenn EXPRes sich um ein Barwort handelt, requirenimmt das eine ".pm" -Erweiterung an und ersetzt für Sie "::" durch "/" im Dateinamen, um das Laden von Standardmodulen zu vereinfachen. Diese Form des Ladens von Modulen birgt kein Risiko, Ihren Namespace zu ändern.
Alles, was Sie usetun müssen, ist, den Dateinamen aus dem angegebenen Paketnamen requirein einem BEGINBlock herauszufinden und importdas Paket aufzurufen . Nichts hindert Sie daran use, diese Schritte nicht manuell zu verwenden.
Zum Beispiel habe ich das Example::Plot::FourDPaket unten in eine Datei namens aufgerufen t.plund es in ein Skript in einer Datei geladen s.pl.
C:\Temp> cat t.pl
package Example::Plot::FourD;
use strict; use warnings;
sub new { bless {} => shift }
sub something { print "something\n" }
"Example::Plot::FourD"
C:\Temp> cat s.pl
#!/usr/bin/perl
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
Dieses Beispiel zeigt, dass Moduldateien nicht enden müssen, sondern dass 1ein wahrer Wert ausreicht.
1ist egal. Es kann sein2, es kann sein"foo", es kann sein["a", "list"]. Was zählt, ist, dass es nicht0oder irgendetwas anderes als falsch bewertet wird oderusefehlschlagen würde.