例如,在下面的情况中,我不希望在初始化后在程序中的任何位置更改$infilename
的值。
my $infilename = "input_56_12.txt";
open my $fpin, '<', $infilename
or die $!;
...
print "$infilename has $result matches\n";
close $fpin;
确保$infilename
中的任何更改不仅会导致警告,还会导致错误的正确方法是什么?
答案 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”变量没有符号表条目。)