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

Laz*_*zer 8 perl const

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

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

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

close $fpin;
Run Code Online (Sandbox Code Playgroud)

确保$infilename结果中的任何更改不仅仅是警告而是错误的正确方法是什么?

Eug*_*ash 9

use Readonly;
Readonly my $infilename => "input_56_12.txt";
Run Code Online (Sandbox Code Playgroud)

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

use Const::Fast;
const my $infilename => "input_56_12.txt";
Run Code Online (Sandbox Code Playgroud)

  • 确保您还安装了Readonly :: XS,以提高速度. (5认同)

Pet*_*r C 8

use constant INPUT_FILE => "input_56_12.txt";
Run Code Online (Sandbox Code Playgroud)

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

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