Comment puis-je qualifier une variable comme const/final en Perl?
par exemple, dans les situations comme ci-dessous, je ne veux pas changer la valeur de $infilename
n'importe où dans le programme après l'initialisation.
my $infilename = "input_56_12.txt";
open my $fpin, '<', $infilename
or die $!;
...
print "$infilename has $result matchesn";
close $fpin;
Quelle est la bonne façon de s'assurer que tout changement dans $infilename
n'entraîne pas seulement des avertissements, mais aussi des erreurs?
3 réponses
use Readonly;
Readonly my $infilename => "input_56_12.txt";
ou en utilisant le nouveau Const:: Fast module:
use Const::Fast;
const my $infilename => "input_56_12.txt";
use constant INPUT_FILE => "input_56_12.txt";
Peut-être ce que vous voulez. Si vous avez besoin de l'initialiser à quelque chose qui peut changer au temps d'exécution alors vous pourriez être sans chance, Je ne sais pas si Perl soutient cela.
EDIT: Oh, regarde eugène y répondre, Perl prend en charge.
une autre façon populaire de créer des scalaires en lecture seule est de modifier l'entrée de la table de symboles pour la variable en utilisant un typeglob:
*infilename = \"input_56_12.txt";
Cela ne fonctionne que pour les variables globales ("mon", les variables n'ont pas de symbole d'entrée de la table).