型グロブで悩むの巻
*a = sub {1+2}
が$a->()でなくて
a() # 3
なのがいまいちわからない。
$ perlsh
main[82]$ $a = 5
5
main[83]$ $b = \$a
SCALAR(0x984e018)
main[84]$ *a
*main::a
main[85]$ *a{SCALAR}
SCALAR(0x984e018)
main[86]$ ${*a{SCALAR}}
5
main[87]$ $$b
5
ということは $b = \$a = *a{SCALAR}だからリファレンスベースで考えていけばいいのかな、、、、
$ $a = [1,2,3,4]
ARRAY(0x984e048)
main[89]$ @$a
1
2
3
4
main[90]$ *b = $a
*main::b
main[91]$ @b
1
2
3
4
とこんな感じ。
実用Perlプログラミングにグロブはハッシュを使って実装されてると書いてある。
main[92]$ $a = [1,2,3]
ARRAY(0x9989060)
main[93]$ $b = {a => 3}
HASH(0x99890c0)
main[94]$ *c = $a
*main::c
main[95]$ *c = $b
*main::c
main[96]$ @c
1
2
3
main[97]$ %c
a
3
なんかrefの型にマッチさせてハッシュっぽくしてる感じだ。
でもまだちゃんと掴みきってないナァ。あと第2版は1章に小難しい話題を入れてる割にはページが少ないのでちょっとアレ。実用Perlプログラミング的には一章100pぐらいあって充実されてるほうが嬉しい。