Perlで何かを書いてて思った。

仕事でプログラミング言語でコレ使えっていわれるなら別だけど、
慣れた・好きな言語を使うのがいいね。


Perlでforkでモジュールに頼らずに変数共有できないかな、と思って少し考えた事をやってみた。


参照を取ればいけるんじゃね?
参照を取ればその参照の値もコピーされるから、参照先の値を共有変数にできるんじゃね?



use strict;

my $g = 0;
my $rg = \$g;

foreach my $x (0..100){
	!fork() && next;
	print "子 [$x] \$rg:$rg \$\$rg:", ++$$rg ,"  \\\$g:", \$g ,"\$g:$g\n";
	exit(0);
}

wait;


当然、ダメでした。というか、これができたら他に情報あるよねー。
オブジェクトを作ってもだめ(オブジェクトもぶっちゃけパッケージ名がついた参照ry)。


forkって親プロセスの変数をそっくりコピーするだけかと思ってたら、
参照の参照先の値自体も別領域に作られるようだから、結構複雑みたいですね。


forkとかthreadsっていったい何?というレベルの知識じゃ甘すぎましたね。
プロセス≒スレッドとか思ってたぐらい。もっと知る必要があるなぁ。