[kansaipm] Re: Privateなサブルーチン

Yasushi Nakajima sey at jkc.co.jp
Thu Feb 14 07:37:40 CST 2002


Yasushi>  ところで、少し話は違うのですが、メソッドとして呼ばれたかどうかをサブルー
Yasushi> チンの側から知る方法ってあるでしょうか?つまり、Class::sub() と呼ばれた
Yasushi> のか、Class->sub() と呼ばれたのかを判別できるか、ということです。原理的
Yasushi> に無理かと思いつつ、何か方法がないかと時々思い出しては調べています。これ

 この件ですが、少しPerlの中を覗いて調べてみました。結論としては、やはり
難しいようです。実行時のコンテキストスタックを見ても、サブルーチンがメソッ
ドとして呼ばれたのかどうかという区別はないようです。

 Privateは、その名前のようにプライベートなサブルーチンを実現する手段と
しては、ちょっと中途半端で使いにくい。むしろ、サブルーチンのメソッド呼び
出しを禁止するための手段として使った方がスッキリするように思い始めていま
す。Demethodてな名前に変えて機能もその方向に整理しようかと。ただ、同名の
変数を道連れにすることなく名前を隠す方法がうまく見つからないで頓挫してい
ます。のんびり考えることにします。

中島 靖




More information about the Kansai-pm mailing list