Exporterの@EXPORTにどんどん公開メソッドを追加していけば、どんどん見える。
逆に、追加しないメソッドは非公開メソッドになる・・・かというとそういうわけではないというか・・・。
Exporter - 関数をエクスポートする - Perl入門ゼミ
CustomModule.pmで、
public_method_2を@EXPORTに追加して、private_methodは追加しない。
public_method_2の中で、private_methodを呼ぶことはする。
#!/usr/bin/perl # CustomModuleをuseで読み込む. use CustomModule; # CustomModuleの公開メソッドを呼ぶ. public_method_1(); # public_method_1を呼ぶ. # CustomModuleの非公開メソッドは直接呼べない. private_method(); # private_methodは見えない.
このように直接呼ぶ事は、
$ vi Exporter.pl $ perl Exporter.pl This is BEGIN. public_method_1. Undefined subroutine &main::private_method called at Exporter.pl line 10. $
出来ない。
しかし、
#!/usr/bin/perl # CustomModuleをuseで読み込む. use CustomModule; # CustomModuleの公開メソッドを呼ぶ. public_method_1(); # public_method_1を呼ぶ. # CustomModuleの非公開メソッドは直接呼べない. #private_method(); # private_methodは見えない. CustomModule::private_method(); # パッケージ名を付けると呼べる.
パッケージ名を付けた場合は、
$ vi Exporter.pl $ perl Exporter.pl This is BEGIN. public_method_1. private_method. $
呼べてしまう。
public_method_2経由で呼び出した方が、
$ vi Exporter.pl $ perl Exporter.pl This is BEGIN. public_method_1. private_method. public_method_2. private_method. $
お行儀良いのだけれど。
Sample/perl/Exporter/EXPORT/src/Exporter at master · bg1bgst333/Sample · GitHub