Одна небольшая деталь, о которой пока не упоминалось в ответах, заключается в том, что если у вас есть (желательно небольшой) модуль, который достаточно специфичен для конкретной цели, чтобы его никогда не использовать повторно, вы можете поместить его в тот же файл, Основная программа или другой пакет:
# main.pl
# Since this is a beginner question, I'll also point out that you should
# *always* use strict and warnings. It will save you many headaches.
use strict;
use warnings;
MyModule::helloworld('Jim');
AnotherModule::helloworld('Jim');
package MyModule; # Still in main.pl!
sub helloworld {
my ( $name ) = @_;
print "Hello, $name\n";
}
package AnotherModule; # Yep, still main.pl
sub helloworld {
my $name = shift;
print "Another hello to $name\n";
}
Это не часто используется, потому что он дает вам пакет, который определен в файле, имя которого не совпадает с именем пакета, что может сбить с толку, потому что вам нужно use
/ require
имя файла, но ссылаться на него в коде по имени пакета.
Также обратите внимание, что 1;
требуется только в качестве последней строки каждого файла, который включается через use
/ require
. В этом случае мне это не нужно, потому что оно в main.pl
. Если вы помещаете несколько пакетов в один файл, вам нужен только 1;
в конце файла, а не после каждого пакета.