Я что-то изменил, но это может соответствовать вашим потребностям.
Прежде всего, вы должны использовать прагму no strict 'refs'
, чтобы использовать символические ссылки. Затем вам нужно переключиться с лексической переменной на переменную пакета (определяется с помощью our
).
Я решил ограничить расширение зоны, свободной от стриктур, блоком, заключенным в фигурные скобки: это может избавить вас от нескольких головных болей в будущем.
#!/usr/bin/perl -w
use strict;
{
no strict 'refs';
our %VIEW_hash = ( 'a' => 'A', 'b' => 'B', 'c' => 'C');
my $X = 'VIEW';
my $name = "$X".'_hash';
foreach ( keys %$name ) {
printf "%s -- %s\n", $_, $$name{ $_ };
}
}