in reply to using hash key as hash value ...

Its because %media hasn't been declared completely yet. It would be like trying to do this:

my $var = "blah".substr($var, 0, 2);

Just because part of it is declared, doesn't mean the whole thing is. If you must reuse the code, store it in an earlier variable:

my $temp = "USLetter:Plain:white:75"; my %media = ( bond => $temp, letter => $temp, plain => $temp );