Gポイントポイ活 Amazon Yahoo 楽天
無料ホームページ 楽天モバイル[UNLIMITが今なら1円]
海外格安航空券 海外旅行保険が無料!
■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 最新50
メモ3
- 505 :名無しさん@勉強中:08/02/21 22:17:10 ID:PHFkj0Vj
- >>503
> $Sys->{'CONV'}->CreatePath($oSYS,0,$bbs,$key,"$st-$ed");
この場合は、$Sys->{'CONV'}に何が入っているのかを調べて、そのクラスのCreatePathメソッドを
調べることになります。
ちなみに、この場合のCreatePathはメソッドです。サブルーチンではありません。
Perlではサブルーチンもメソッドも定義の仕方は同じような感じですが、
オブジェクト指向用の作られていればメソッドと呼んだほうが良いです。
「$何か->ごにょごにょ();」←この形はメソッドの呼び方です。対して、
「&何か::ごにょごにょ();」または「何か::ごにょごにょ();」または「ごにょごにょ();」←これらはサブルーチンの呼び方です。
> $Page->Print(ref CreatePath);
ref関数の使い方が誤りだと思います。ref関数に渡すべきはインスタンスです。メソッド名を渡しても意味はありません。
「$Page->Print(ref CreatePath);」と書いた場合、perlは仕方なく、CreatePathを文字列、つまり"CreatePath"と解釈するでしょう。
これは何のインスタンスでも、リファレンスでもなく、ただの文字列です。ですから、ref関数は未定義値を返すでしょう。
正しくは「$Page->Print(ref $Sys->{'CONV'}」
また、$PageはTHORINクラスのインスタンスですが、THORINクラスのPrintメソッドはバッファに押し込むだけで
出力はされません。その点は考慮なさっていますか?
また、「$Page->Print(ref CreatePath);」の「CreatePath」のように、文字列をそのまま書くのはPerlの作法としては
推奨されません。シングルクォーテーションまたはダブルクォーテーションで囲むべきです。
なぜなら、perlは「CreatePath」を関数か、サブルーチンか、定数か、どれなのかと考え、どれでもないので
仕方がなく文字列と解釈するからです。また、後からこれを読む人にも同様の疑念を抱かせます。
これらによって、perlや後からこれを読む人も無駄な苦労をするでしょう。
したがって、明らかな文字列なので、明らかに文字列であるとわかるように、引用符でくくることが強く推奨されます。
500KB
続きを読む
掲示板に戻る 全部 前100 次100 最新50