変数値の再評価は?
[上に]
[前に]
[次に]
きゅんべる
1999/06/10(木) 01:01:10
例えば、
$var = '$a';
$a = 'hello';
といった状況で、$varをつかって、'hello'を得たいのですが、
どうすればいいのでしょう?
$var =~ s/\$([a-zA-Z_]\w*)/sprintf(${$1})/ge;
とかやって見たんですけど、Perl 4 ではうまくいきません。
(Perl 5 では OKみたいです。)
B-Cus
1999/06/10(木) 01:05:30
1. エバる。perl4/5両方で可。
$var = '$a';
$a = 'hello';
print eval($var);
2. リファレンス。perl5のみ。
$var = \$a;
$a = 'hello';
print $$var;
これ↑は…シンボリックリファレンスだったかな、それともハード
リファレンスだったかな…? とにかく青いラクダ本を見るべし。
B-Cus
1999/06/10(木) 01:10:16
ああ、そっか。これ↓がシンボリック。さっきのはハード。
$var = 'a';
print ${$var};
あと、型グロブを使う方法もあったっけ。
きゅんべる
1999/06/10(木) 01:23:19
[[解決]]
なるほど、エバればいいのかっ
3時間くらい悩んだのに、10分で答えが分かってしまうとは、
いや、なんか癖になりそうです。
どうも、ありがとうございました。
[上に]
[前に]
[次に]