質問: ### 前提・実現したいこと perlで変数名を動的に定義しようとしています。 例えば以下の例では、$xという変数に1を代入しようとしているのですが、 printしようとするとエラーが発生します。 変数名が動的に定義できれば、方法にこだわりはありません。 evalやリファレンスを上手に使えばできるはずなのだと思いますが、 どうしてもうまくいかなかったため、質問させていただきました。 よろしくお願いいたします。 ### 発生している問題・エラーメッセージ ``` Global symbol "$x" requires explicit package name ``` ### 該当のソースコード ``` #!/usr/bin/perl use strict; use warnings; my $varnm="x"; eval "my \$$varnm=1"; print "$x"; ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) perl v5.18.2
回答: それはシンボリックリファレンスまたはソフトリファレンスとして知られているものですね。 可能ではありますが、推奨された使い方ではありません。推奨されていないので、use strictした時には使えません。 ``` my $varn="x"; $$varn=1; print "$x\n"; ```