• ベストアンサー

$AAA::BBBみたいなヤツって?

cgiの中で &ABC::XYZ; と $ABC::XYZ のように書かれている部分があるのですが、2つの意味が分かりません。 教えてください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.3

百聞は一見にしかず、こういうときは簡単なサンプルを作ってみるに限ります。 なお、先の説明では「モジュール」と表記しましたが、正しくは「パッケージ」です。パッケージは必ずしもモジュールである必要はありません。 [abc_package.pm]  # パッケージ化したモジュール  # abc_package.pm  package abc;  # これがパッケージの名前  $xyz = "北斗と南は";  sub xyz {   $xyz = "ウルトラマンA";  }  1; [def_package.pl]  # パッケージ化したライブラリ  # def_package.pl  package def;  # これがパッケージの名前  $xyz = "健太郎と猛は";  sub xyz {   $xyz = "超人バロム・1";  }  1; [abc_call.pl]  # パッケージを呼び出す  # abc_call.pl  # パッケージ呼び出し  use abc_package;  require("def_package.pl");  # abc  print "$abc::xyz";  &abc::xyz;  print "$abc::xyz\n";  # def  print "$def::xyz";  &def::xyz;  print "$def::xyz\n"; abc_call.plを実行すると、結果は次のようになるはずです。  北斗と南はウルトラマンA  健太郎と猛は超人バロム・1 さてさて、これで回答あるいはヒントになりますでしょうか。。。

mtakaeic
質問者

お礼

サンプルプログラムありがとうございました! 具体的でとてもわかりやすかったです。 ありがとうございました。

その他の回答 (2)

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.2

取り急ぎ訂正しなくてはならないことだけ・・・ 既にお気づきかとは思いますが、&は変数なんかではなく、サブルーチンです。。(^^A; お詫びして訂正します。m(__)m

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.1

言語はPerlですね。 &ABC::XYZ  ABCと言うモジュールの配列&XYZ $ABC::XYZ  ABCと言うモジュールのスカラー変数$XYZ をそれぞれさします。

mtakaeic
質問者

お礼

アドバイス有り難う御座います!! そうなると$ABC::XYZの場合、 ABCと言うモジュールのスカラー変数$XYZが呼び出されるわけですが、ABC内モジュールは実行されるのでしょうか? ただ$XYZの値を持ってくるだけなのでしょうか? 引き続きアドバイスお願いします。

関連するQ&A

専門家に質問してみよう