I have to produce code that is readable and easy to follow for our support group. Sometimes I have a slighly complex datastructure like this:
$myHash{"uno"} = "one";
$myHash{"dos"} = "two";
$myHash{"tres"}->[0] = "three-point-oh";
$myHash{"tres"}->[1] = "three-point-one";
$myHash{"tres"}->[2] = "three-point-two";
$myHash{"quatro"} = "four";
I want to manipulate the array in
$myHash{"tres"}, and in order to prevent deferencing it all the time, I'll copy it into an actual array:
@myArray = @{$myHash{"tres"}}; #DeRef & Copy to @myArray
$myArray[3] = "three-point-three";
$myArray[4] = "three-point-four";
Once I'm done manipulating the data, I want to put it back into the original data structure. I can do either one of these:
@{$myHash{"tres"}} = @myArray; #Copies Array to Hash
$myHash{"tres"} = \@myArray; #Copies Ref to Hash
For very large arrays, the second statement is faster than the first one.
Of course, the problem is my initial copy to @myArray is not very efficient either. What I'd really love to do is something like this:
\@myArray = $myHash{"tres"};
Which would allow me to refer to
$myHash{"tres"} as
@myArray in my code without copying the whole array in the first place. (Then, I wouldn't even worry about putting the array back into my original data structure).
I guess what I'm really interested in is creating an alias of $myHash{"tres"} as @myArray. Is there anyway to do that in Perl?