Since almost all hashes and arrays I make end up getting passed to
subroutines, I usually just create them as refs. This has the
(slight) benefit having a consistent point of dereference in mainline
code and subroutine code instead of having to remember to move the
arrow around. Also foo($this) looks nicer that foo(\%that).
RefFoo
#!/usr/bin/perl
use strict;
my %rgbs = (
yellow => { r => 0xff, b => 0, g => 0xff, },
magenta => { r => 0xff, b => 0xff, g => 0, },
);
print "$rgbs{yellow}->{r}\n";
foo(\%rgbs);
sub foo {
my $rgbs = shift;
print "$rgbs->{yellow}{r}\n";
}