@INCとuse ちょっとずれてるので横からコメント unshift、push で変更を加えた @INC(モジュール検索PATH)が使用されない。 起こってる現象とこの認識はちょっと違う。 具体的に何が起こっているか説明する前に、Perlにはコンパイル(BEGIN) フェーズとランタイムフェーズという、2回コードが実行されるタイミングがある(まぁ厳密にはもう少し色々フックすることが可能だけど、とりあえず一般的にはその二つで大丈夫)。 これがどういうことかというと、順番にコードを書いているつもりでもコンパイルフェーズで評価される部分とランタイムフェーズで評価される部分があるということ。わかりやすい例としてはこんな感じか: #!/usr/bin/perl use strict; print "Runtime!\n"; BEGIN { print "Compile time!\n"; }