"my" variable $var masks earlier declaration in same scope at E:\aa\packtest.pl line 16. "my" variable $var masks earlier declaration in same scope at E:\aa\packtest.pl line 29. Use of uninitialized value in concatenation (.) or string at E:\aa\packtest.pl line 32. Use of uninitialized value in concatenation (.) or string at E:\aa\packtest.pl line 43. Use of uninitialized value in concatenation (.) or string at E:\aa\packtest.pl line 22. #### package aaa; #{ use strict; use warnings 'all'; my $var = 'first var'; sub do_a { print "In 'aaa' var is set to '$var'\n"; } #} package main; use strict; use warnings 'all'; my $var; aaa::do_a(); bbb::do_b(); ccc::do_c(); print "In 'main' var is set to '$var'\n"; package bbb; #{ use strict; use warnings 'all'; my $var = 'second time for var'; sub do_b { print "In 'bbb' var is set to '$var'\n"; } #} package ccc; #{ use strict; use warnings 'all'; sub do_c { print "In 'ccc' var is set to '$var'\n"; } #} #### In 'aaa' var is set to 'first var' In 'bbb' var is set to '' In 'ccc' var is set to '' In 'main' var is set to ''