vars.pm は変数名を導入するためのモジュールですが、Perl では C のように変数を宣言する必要がないので必要性がもうひとつはっきりしません。実は、vars.pm は変数名やリファレンス、サブルーチン名をチェックする strict.pm と関係しているようです。use strict; が宣言されていると、変数がmy で宣言したプライベート変数か、パッケージ名を含めて完全に記述された変数しか使えなくなります。不正な変数名の使用によるクラッシュを避けるためです。例えば次の Sample.pm モジュールと test_sample.pl スクリプト本体からなるプログラムを作ります。 package Sample; sub import { $main::hello = 'hello'; } 1; # Sample.pm use Sample; # use strict; print $h