我有一堆Perl文件,它们接受一些文件名常量.我想在一个单独的文件中定义它们 - 类似于C中的头文件.在Perl中执行此操作的最佳/最标准方法是什么?
Sin*_*nür 16
在Perl中没有与C头文件等效的东西.要声明和定义全局常量,可以使用define pragma.虽然界面看起来很合理,但我对此模块没有任何经验.
另一方面,您可以编写一个模块来定义常量并使用它们将它们导入模块use.例如:
package MyConstants;
use strict; use warnings;
use Exporter qw( import );
use Const::Fast;
our @EXPORT = qw();
our @EXPORT_OK = qw( $X $Y );
const our $X => 'this is X';
const our $Y => 'this is Y';
__PACKAGE__;
__END__
Run Code Online (Sandbox Code Playgroud)
然后,您可以按如下方式使用此模块:
#!/usr/bin/perl
use strict; use warnings;
use MyConstants qw( $X );
print "$X\n";
print "$MyConstants::Y\n";
Run Code Online (Sandbox Code Playgroud)
如果您可以使用完全限定的变量名称(例如$MyConstants::Y),则根本不需要Exporter.
另外,确保导出的变量在其他地方不可修改(请参阅Exporter文档中的注意事项).
当然,您也可以使用constant.pm定义常量.使用这些常量可能会更快,但如果你需要在字符串中插入它们,它们就会很笨拙.
我们通常使用模块名称Constants来执行此操作.就像是:
package MyPackage::Constants;
our $DIR = "/home/chriss";
our $MAX_FILES = 5;
1;
Run Code Online (Sandbox Code Playgroud)
然后,使用它:
package MyPackage;
use MyPackage::Constants;
open(my $fh, ">", $MyPackage::Constants::DIR . "/file");
Run Code Online (Sandbox Code Playgroud)
如果您不想一直引用该包,可以使用Exporter并引入您想要的所有符号.
| 归档时间: |
|
| 查看次数: |
13531 次 |
| 最近记录: |