March 07, 2010
■ [perl][dark]\(hoge) -> ?

print \(a..z); # SCALAR(0x182fe2c)SCALAR(0x182fe38)...SCALAR(0x182ff4c)SCALAR(0x182ff58)
なにこのミラクル構文。リスト(配列じゃなくてリスト構文)のリファレンス取ろうとすると中身のリファレンスのリスト返すのか。すげー
追記
@a = 0..9; @b = A..Z; @c = a..z; print \(@a); # SCALAR(0x182fd8c)SCALAR(0x182fd98)...SCALAR(0x182fec4)SCALAR(0x182fed0) print \(@a,@b,@c); # ARRAY(0x182f984)ARRAY(0x182fb04)ARRAY(0x182fde0)
リストの中身が複数に分かれると、それぞれのリファレンスを返すみたい。
ちなみに、複数の配列のすべての中身のリファレンスが欲しい時は
print \(@_=(@a,@b,@c)); # SCALAR(0x2861ac)SCALAR(0x286284)...(many)...SCALAR(0x1830368)SCALAR(0x1830374)
のように、一つの配列に代入してやるといいみたい。いいシュガー発見した気がする。
追記2
print \(@{[@a,@b,@c]});
こっちのほうがスマートですね。
コメントを書く