use stirct 'vars'; とした場合、或いは単に use strict; とした場合、グローバル変数は全てパッケージ名で完全に修飾しなければなりません。 例(1): #!/usr/local/bin/perl use strict; my $var1; $main::var1 = 3; subroutine(); sub subroutine { print "var1 = $main::var1\n"; } これが面倒な場合は以下のようにすれば記述の負担を減らすことができます。 例(2): #!/usr/local/bin/perl use strict; use vars qw($var1 @arr1); my $var1 = 3; my @arr1 = (1, 2, 3); subroutine(); sub subroutine { print "var1 = $var