以下の内容はhttps://r9.hateblo.jp/entry/20101004/p1より取得しました。


evalではstrict 'refs'でも展開(?)できる

こちらを見て。
404 Blog Not Found:perl - 実践で役立たないPerl正規表現 完全解説


そうか、evalって重ねられるんだと思ってやってみたらできた。

use strict;
use warnings;

my $aaa = 123;
my $bbb = '$aaa';
my $ccc = '$bbb';
say eval eval eval $ccc;
#=> 123


あれ?、なんかこれって use strict; でできないんじゃなかったかと思ってたんだけど…。

use strict;
use warnings;

our $aaa = 123;
our $bbb = 'aaa';
our $ccc = 'bbb';

say ${${$ccc}};
Can't use string ("bbb") as a SCALAR ref while "strict refs" in use at - line 8.

うんやっぱりそうだ。
ちなみに my だとシンボルテーブルに乗らないからできない。


no strict 'refs' で打ち消せばいける。

use strict;
no strict 'refs';

use warnings;

our $aaa = 123;
our $bbb = 'aaa';
our $ccc = 'bbb';

say ${${$ccc}};
#=> 123


なんか eval () って何でもありだなー。
黒魔術っていうんですかね、こういうのを。




以上の内容はhttps://r9.hateblo.jp/entry/20101004/p1より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14