Referencje symboliczne

W poprzednim podrozdziale zastąpiłem definicję nazwanej procedury procedurą anonimową. Aby to osiągnąć, musiałem pomajstrować przy tablicy symboli. Teraz przejdę od majstrowania do nadużyć.

Referencja symboliczna, czyli referencja do tablicy symboli, wybiera nazwę zmiennej za pomocą łańcucha i uzyskuje do niej dostęp za pomocą czegoś, co wygląda jak wyłuskiwanie:

my $name = 'foo';
my $value_in_foo = ${ $name }; # $foo

Zwykle nie jest to dobry pomysł, więc dyrektywa strict tego zabrania. Jeśli dodam do przykładu pragmę use strict, otrzymam komunikat o błędzie:

use strict;
my $name = 'foo';
my $value_in_foo = ${ $name }; # $foo

Problem powoduje część refs dyrektywy strict:

Can't use string ("foo") as a SCALAR ref while "strict ...

Get Perl. Mistrzostwo w programowaniu now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.