我有一个带有常量的配置文件(config.pl):

#!/usr/bin/perl
use strict;
use warnings;
use Net::Domain qw(hostname hostfqdn hostdomain domainname);

use constant URL => "http://".domainname()."/";
use constant CGIBIN => URL."cgi-bin/";
use constant CSS => URL."html/css/";
use constant RESSOURCES => URL."html/ressources/";
...

而且我想在index.pl中使用这些常量,因此index.pl开头为:
#!/usr/bin/perl -w
use strict;
use CGI;
require "config.pl";

如何在index.pl中使用URL,CGI ...?
谢谢,
再见

编辑
我找到了解决方案:
config.pm
#!/usr/bin/perl
package Config;
use strict;
use warnings;
use Net::Domain qw(hostname hostfqdn hostdomain domainname);

use constant URL => "http://".domainname()."/";
use constant CGIBIN => URL."cgi-bin/";
1;

index.pl
BEGIN {
    require "config.pm";
}
print Config::URL;

结尾

最佳答案

您要在此处设置一个Perl模块,可以从中导出该模块。

将以下内容放入“MyConfig.pm”:

#!/usr/bin/perl
package MyConfig;
use strict;
use warnings;
use Net::Domain qw(hostname hostfqdn hostdomain domainname);

use constant URL => "http://".domainname()."/";
use constant CGIBIN => URL."cgi-bin/";
use constant CSS => URL."html/css/";
use constant RESSOURCES => URL."html/ressources/";

require Exporter;
our @ISA = 'Exporter';
our @EXPORT = qw(hostname hostfqdn hostdomain domainname URL CGIBIN CSS RESSOURCES);

然后使用它:
use MyConfig;  # which means BEGIN {require 'MyConfig.pm'; MyConfig->import}

通过在@ISA包中将Exporter设置为MyConfig,可以将包设置为从Exporter继承。 Exporter提供了import方法,该方法由use MyConfig;行隐式调用。变量@EXPORT包含Exporter默认应导入的名称列表。 Perl的文档和Exporter的文档中还有许多其他选项。

10-07 14:32