$hashref;と、ハッシュ初期化時にkeyとvalueの組み合わせをまとめて指定することがあると思います。};ここで、valueの部分にサブルーチンやメソッドからの返り値を入れるようにするときに注意。};こんなことになってしまう。要は、ハッシュの初期化ってリストを渡して、(0から始めて)偶数番目の要素をkey、奇数番目の要素をvalueとする仕組みなので、foo()が返す要素数によって初期化時に使われるリストの要素数が変わってしまうとおかしくなる、ということ、かな?何も返さない場合もズレてしまう。};なので、このような初期化を行うときにはサブルーチンやメソッドの返り値を使わないようにする、とか、必ず1つのscalar値を受け取るようにする、とかなんか気をつけた方が良いかもしれない。'';}とかの場合もfoo()の返り値は偽とみなされデフォルト値200が設定されてしまう。200);この場合だと4番目がhoge(undef)の返り値がundefじゃなくなるためNG。200;}こうすれば一応通るけど、キモい。undef;"を区別したいなんていう場合はそうそう無いと思うけど、どうすれば良いのかは気になる。Unmarshalちょっとやり方が分からなくて調べたのでメモ。