use strict; use warnings; my %foo; my %bar; $bar{'one'} = 1; my ($x,$y); $x = "$bar{'one'} $foo{'one'}"; $x = "$y $foo{'one'}"; $x = "xxx $foo{'one'}"; __END__ Use of uninitialized value in concatenation (.) or string at /tmp/p line 10. Use of uninitialized value $y in concatenation (.) or string at /tmp/p line 11. Use of uninitialized value in concatenation (.) or string at /tmp/p line 11. Use of uninitialized value $foo{"one"} in concatenation (.) or string at /tmp/p line 12.