以下のコードは、ClassBの$hageをtypoしてます。でも、use strictも効かずコンパイルが通ってしまいます。
package ClassA; use strict; my $hoge; sub count_up_hoge{return ++$hoge;} package ClassB; use strict; my $hage; sub count_up_hage{return ++$hoge;} package main; # hoge count print "hoge 1: ", ClassA->count_up_hoge(), "\n"; print "hoge 2: ", ClassA->count_up_hoge(), "\n"; # hage count print "hage 1: ", ClassB->count_up_hage(), "\n"; print "hage 2: ", ClassB->count_up_hage(), "\n";
my宣言はファイルの末尾まで有効なためです。ClassAで宣言したはずの$hogeは、ClassBでもmainでも使えます。