use strict; use warnings; my %dict = ( foo => [ 'foo', 'is', 'not', 'bar' ], bar => [ 'bar', 'is', 'not', 'foo' ] ); # push a ref to the array given by $dict{bar} onto the array given by $dict{foo} push( @{ $dict{foo} }, \@{ $dict{bar} } ); my $wordbar = ${ $dict{foo} }[3]; # accessing the definition for bar can be done through the ref, but also directly print join( ' ', ${ $dict{foo} }[4], '=', $dict{$wordbar} ), "\n"; print join( ' ', ${ $dict{foo} }[3], '=', @{ $dict{ ${ $dict{foo} }[3] } } ), "\n"; print join( ' ', ${ $dict{foo} }[3], '=', @{ $dict{$wordbar} } ), "\n"; print join( ' ', ${ $dict{foo} }[3], '=', @{ ${ $dict{foo} }[4] } ), "\n";