Как использовать переменную для имени переменной?

my $myvar = "foo";
my $x = "my";
my $y = "var";

print ${$x$y};  # output is foo?

Как я могу использовать переменную для создания имени переменной?


person CJ7    schedule 10.08.2016    source источник
comment
metacpan.org/pod/   -  person Andy Ray    schedule 10.08.2016
comment
Обратите внимание, что использование use strict; не позволяет вам это сделать. Вы уверены, что хотите это? Использование этой техники обычно означает, что вещи не организованы должным образом (возможно, вам следует использовать хэш).   -  person Jonathan Leffler    schedule 10.08.2016
comment
eval.in/620376   -  person mpapec    schedule 10.08.2016
comment
Суть в том, что не делайте этого. Похоже, вам нужен хэш, скажем, %values. Затем вы можете написать $values{myvar} = 'foo' и print $values{$x.$y} и получить правильный результат.   -  person Borodin    schedule 10.08.2016
comment
@JonathanLeffler Я не думаю, что это лучшая цель для обмана, поскольку четкое решение этого вопроса - использовать массив. Я думаю, что этот вопрос был бы лучше (и я просто очистил его, чтобы сделать его подходящим каноническим). Изменить: если подумать, в другом вопросе также следует использовать массив, так что, возможно, ни одна из них не является отличной целью для обмана. Ну что ж.   -  person ThisSuitIsBlackNot    schedule 10.08.2016
comment
@ThisSuitIsBlackNot: как Как я могу использовать переменную в качестве имени переменной в Perl?, так и Как я могу объединить две строки и обработать результат как имя переменной? покрыть территорию - и первый из перечисленных был дан ответ 5 лет назад. Любой из них можно использовать как дубликат — я не думаю, что разница настолько велика, чтобы оправдывать изменение, но если какой-то другой владелец Perl Mjölnir не согласится и переключится, я не буду спорить об этом.   -  person Jonathan Leffler    schedule 10.08.2016