Namazu-devel-ja(旧)


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

Re: HACKING-ja -> mknmz.in



臼田です。

Makoto Fujiwara wrote:
> 
> ついでに質問。Perl の cross reference は皆様、どうしているのか教
> えて下さい。例えば sub の呼出関係をちょっと見たい時。
> 
> もう一つ聞いてしまおう。
> 
> sub complete_field_info (\%$$\$\$\$) {
>     my ($fields, $cfile, $uri, $headings, $contref, $wsref) = @_;
> 
> の時の (\%$$\$\$\$) はどう読むのかな... 全て pointer という意味 ?
perlの知識に関する抜き打ち試験ですか?

\がついているのはpointer, ついていないのは値渡しだと思っています。
$fieldsはハッシュのpointer,$cfileと$uriは値渡しであとはpointerですか?
私は熟れていないのでプロトタイプ宣言をしてもらっていても、さらに先の
実際に変数を操作しているサブルーチンまで辿っていって確認しないと不安
です。

pointerには変数名として'ref'をつけましょうとHACKING-jaにかいたほうが
よいのかもしれません。
でも上記の例でも$headingsが$headingsrefと書かれていないなど、すでに
混在しているようなので変数名の付け替えもしないと推奨できないかもしれ
ません。

最近全角半角変換のサブルーチンを利用した際に気になったのですが
codeconv::eucjp_han2zen_kana ($) 
は元々ファイル名程度の文字列を扱うルーチンのためか値渡しで書かれてい
るのですが、文書を丸ごと渡すような使い方をしてしまいました。
メモリ効率を考えるとポインタ渡しに直したほうがよいのかなと思いつつも
そのまま使っています。どれぐらいの違いがでるのか計測する方法はあるの
でしょうか。

実はperl3の知識でfilterを書き始めたので私の書いたfilterはpointerと
値がごちゃごちゃに扱われています。最近気になり始めました。

臼田幸生