Уже есть стандартный модуль конфигурации , поэтому выберите другое имя.
Скажем, у вас есть MyConfig.pm
со следующим содержанием:
package MyConfig;
our $Foo = "bar";
our %Baz = (quux => "potrzebie");
1;
Тогда другие модули могут использовать его как в
#! /usr/bin/perl
use warnings;
use strict;
use MyConfig;
print "Foo = $MyConfig::Foo\n";
print $MyConfig::Baz{quux}, "\n";
Если вы не хотите полностью определять имена, используйте вместо этого стандартный модуль Exporter .
Добавьте три строки к MyConfig.pm
:
package MyConfig;
require Exporter;
our @ISA = qw/ Exporter /;
our @EXPORT = qw/ $Foo %Baz /;
our $Foo = "bar";
our %Baz = (quux => "potrzebie");
1;
Теперь полное имя пакета больше не нужно:
#! /usr/bin/perl
use warnings;
use strict;
use MyConfig;
print "Foo = $Foo\n";
print $Baz{quux}, "\n";
Вы можете добавить скаляр только для чтения к MyConfig.pm
с помощью
our $READONLY;
*READONLY = \42;
Это задокументировано в perlmod .
После добавления его в @MyConfig::EXPORT
, вы можете попробовать
$READONLY = 3;
в другом модуле, но вы получите
Modification of a read-only value attempted at ./program line 12.
В качестве альтернативы вы можете объявить в MyConfig.pm
константы, используя модуль constant , а затем экспортировать их.