私が書いた多くのPerlモジュールを呼び出すためのディスパッチテーブルを構築することを検討しています。
Hello.pm
例として、単純な関数を含むパッケージが呼び出されたhello()
場合、この関数へのコード参照を取得したいと思います。
以下は機能しません。
my $code_ref=\&Hello->hello();
$code_ref->();
ただし、関数helloがパッケージからエクスポートされる場合、次のように機能します。
my code_ref=\&hello;
code_ref->();
誰かが最初のケースの正しい構文を知っていますか?それとも、これは単に不可能ですか?
最後に、すべてのコード参照をハッシュテーブルに入力したいと思います。
#####すべての回答をありがとういくつかの回答で指摘されている正しい呼び出しは次のとおりです。
my $code_ref=\&Hello::hello;
$code_ref->();
ディスパッチテーブルにロードしたい10個の異なるファイルに10個のモジュールがあります。これにより、構成をデータとしてロードし、コードから分離することが容易になります。これにより、コードを変更せずにテストベンチに追加のモジュールをロードできます。構成ファイルを変更するだけです。Higher OrderPerlの作者であるMarkDominusは、これに関するいくつかの良い例を持っています。