如何在Perl中将变量限定为const / final?

时间:2010-11-03 18:38:24

标签: perl const

例如,在下面的情况中,我不希望在初始化后在程序中的任何位置更改$infilename的值。

my $infilename = "input_56_12.txt";
open my $fpin, '<', $infilename
    or die $!;

...
print "$infilename has $result matches\n";

close $fpin;

确保$infilename中的任何更改不仅会导致警告,还会导致错误的正确方法是什么?

3 个答案:

答案 0 :(得分:9)

use Readonly;
Readonly my $infilename => "input_56_12.txt";

或使用较新的Const::Fast模块:

use Const::Fast;
const my $infilename => "input_56_12.txt";

答案 1 :(得分:8)

use constant INPUT_FILE => "input_56_12.txt";

可能是你想要的。如果你需要将它初始化为可能在运行时改变的东西,那么你可能会运气不好,我不知道Perl是否支持它。

编辑:哦,看看eugene y的答案,Perl确实支持。

答案 2 :(得分:4)

另一种创建只读标量的流行方法是使用typeglob修改变量的符号表条目:

*infilename = \"input_56_12.txt";

这仅适用于全局变量(“my”变量没有符号表条目。)