Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: $$contref = 文字列の中身 ?



藤原 誠 / Makoto Fujiwara <makoto@xxxxx> wrote:
> 臼> Perlのmodule呼び出しの際
> 臼> スカラーで返ってくるはずのところが配列で返ってきてしまっていた
> 臼> ということなのでしょうか?
> 
> 確かに説明不充分の気がして、多分配列ということではなくて単に
> ポインターの問題かなと思って、短いものを用意して見たのですが、
> 

正しい出力でも違う結果が出ているのは面白いですね。
> (a)  きょうはいいお天気です
> hex: b142
これはKanji-inコードの最初の2byteのようですね(EUCなのになぜ?)

> (b)  きょうはいいお天気です
> hex: 4ada
これは「き」のようですね

> (a)  vars
> hex: 6716
これは「va」ですけど
なぜこういうものが返ってくるのでしょうかね?

> (c)  2
> hex: 23
これは配列の要素数「2」が返ってきているのでしょうか?

sub print_ ($$) {
    my ($label,$contref) = @_;
    print "($label)  :".$contref. "\n";
    print $$contref."\n";
    print 'hex: '.unpack('h4',substr($$contref,0,2)),"\n";
}
としてポインタを直接表示させてみるとポインタがスカラ、配列、
ハッシュ等の何を指しているかが表示されます。

が、そもそもスカラでないものを単にデリファレンスして表示しようと
するとエラーになるようですね

2つの例でnkfのバージョンが違うのではと思います。

臼田幸生