my(%h, $x, $y, $z); %h = ($x => $y . $z); Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in list assignment at - line 2. No, I was assigning a hash. my(%h, %g, $x, $y, $z); %h = ($x => $y . $z); %g = %h; Use of uninitialized value in concatenation (.) at - line 3. Use of uninitialized value in concatenation (.) at - line 3. Use of uninitialized value in list assignment at - line 3. There was no list on either side. Those are just hashes. It's an "accident of the compiler's implementation" that this turns into a list. It could detect this and do something else. my(%h, %g, $x, $y, $z); %h = ("$x" => $y . $z); %g = %h; Use of uninitialized value in string at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in concatenation (.) at - line 2. List assignment? What list assigment? This must be wrong. my(@a, $x, $y, $z); @a = ($x, $y . $z); Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Huh? Why didn't this complaint? It's a list assignment! Isn't it? my(@a, $x, $y, $z); @a = ("$x", "$y$z"); Use of uninitialized value in string at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in concatenation (.) at - line 2. my(@a, %h, $x, $y, $z); @a = ($x => $x, "$x", "$y$z", undef() => $x.$y.$z); %h = ($x => "@a", @a => @a, $y => join($x,$y,$z), @a); Use of uninitialized value in string at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in concatenation (.) at - line 2. Use of uninitialized value in join at - line 3. Use of uninitialized value in join at - line 3. Use of uninitialized value in join at - line 3. Use of uninitialized value in join at - line 3. Use of uninitialized value in join at - line 3. Use of uninitialized value in join at - line 3. Use of uninitialized value in list assignment at - line 3. Use of uninitialized value in list assignment at - line 3. Use of uninitialized value in list assignment at - line 3. Use of uninitialized value in list assignment at - line 3. Use of uninitialized value in list assignment at - line 3. Use of uninitialized value in list assignment at - line 3. Use of uninitialized value in list assignment at - line 3. Use of uninitialized value in list assignment at - line 3. I ask you seriously: what it the *OPTIMAL* text you want to see here? Let's pretend nothing is impossible. What do you REALLY want? --tom