What Im trying to do is easiest explained by some sample code
#!/usr/bin/perl -w
use strict;
use diagnostics;
my %hash;
%hash = ( 1 => { ONE => "testdir",
TWO => "tmpdir" },
2 => { LOCATIONA => "$hash{1}{ONE}/$hash{1}{TWO}/my_file.txt
+",
LOCATIONB => "$hash{1}{TWO}/$hash{1}{ONE}/my_file.txt
+" } );
print "$hash{2}{LOCATIONA} = location a\n";
print "$hash{2}{LOCATIONB} = location b\n";
The output I get is this
Use of uninitialized value in concatenation (.) or string at test2 lin
+e 7 (#1)
(W uninitialized) An undefined value was used as if it were alread
+y
defined. It was interpreted as a "" or a 0, but maybe it was a mi
+stake.
To suppress this warning assign a defined value to your variables.
To help you figure out what was undefined, perl tells you what ope
+ration
you used the undefined value in. Note, however, that perl optimiz
+es your
program and the operation displayed in the warning may not necessa
+rily
appear literally in your program. For example, "that $foo" is
usually optimized into "that " . $foo, and the warning will refer
+to
the concatenation (.) operator, even though there is no . in your
program.
//my_file.txt = location a
//my_file.txt = location b
Is there a way to do this within a hash?
Ted
--
"That which we persist in doing becomes easier, not that the task itself has become easier, but that our ability to perform it has improved."
--Ralph Waldo Emerson