BEGIN

モジュールにおいて、BEGINは特別な関数で、モジュールをuseやrequireされた時に実行される。
主に初期化処理で使う。

豆知識 - 知っておくと役に立つ - Perl入門ゼミ
perl のモジュールインポートまわりの整理 - Please Sleep
perlのコードでよく見かけるrequire、use、BEGINの役割や関係についてまとめる | MooLog

CustomModule.pmをつくって、

BEGINが実行された時、"This is BEGIN."を出力。
最後の"1;"がないとエラーメッセージが出る。

BEGIN.plで、

useまたはrequireする。

$ vi BEGIN.pl
$ vi CustomModule.pm
$ perl BEGIN.pl
This is BEGIN.
$

useでもrequireでもコンパイル時実行としてBEGINが実行される。
requireは実行時評価と書いたけど、BEGINだけはどちらでもコンパイル時評価されるのかな。
requireはimportを呼ばないのが特徴だが、getcwdの関数名はimportで公開されるのかな。
この辺が微妙。

Sample/perl/BEGIN/BEGIN/src/BEGIN at master · bg1bgst333/Sample · GitHub