代码之家  ›  专栏  ›  技术社区  ›  Aakash Goel

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

  •  8
  • Aakash Goel  · 技术社区  · 14 年前

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

    my $infilename = "input_56_12.txt";
    open my $fpin, '<', $infilename
        or die $!;
    
    ...
    print "$infilename has $result matches\n";
    
    close $fpin;
    

    正确的方法是什么来确保 $文件名 不仅会导致警告,还会导致错误?

    3 回复  |  直到 14 年前
        1
  •  9
  •   Eugene Yarmash    14 年前
    use Readonly;
    Readonly my $infilename => "input_56_12.txt";
    

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

    use Const::Fast;
    const my $infilename => "input_56_12.txt";
    
        2
  •  8
  •   Peter C    14 年前
    use constant INPUT_FILE => "input_56_12.txt";
    

    可能是你想要的。如果您需要将它初始化为在运行时可能会发生变化的东西,那么您可能会走运,我不知道Perl是否支持这一点。

    编辑:哦,看看尤金Y的答案,Perl确实支持这一点。

        3
  •  4
  •   Eugene Yarmash    14 年前

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

    *infilename = \"input_56_12.txt";
    

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