>perl -wMstrict -le "func('before'); my $tricky = 'initialized at runtime'; func('after'); ;; sub func { printf qq{$_[0]: %s defined: }, defined($tricky) ? 'is' : 'NOT'; print qq{'$tricky'}; } " Use of uninitialized value $tricky in concatenation (.) or string ... before: NOT defined: '' after: is defined: 'initialized at runtime'