$curr_struct_pos = "string"; %$curr_struct_pos; #### #assume strict and warnings! my %hash=(string=>{}); #### $hash{string}->{$key}->[$index]=$whatever; #### $path = "Global".$type. "Def:".$curr_struct_pos->{$type}[$a]. ".def"; #### sub dump_symbol_table { print "SYMBOL TABLE\n-------------------------------------------------------\n"; foreach my $key (sort keys %::) { next unless $key=~/^[\x20-\xff]/; (my $value=$::{$key})=~s/([\x00-\x1f])/sprintf("\\x%02x",ord($1))/ge; printf "%20s = %-20s\n",$key,"'$value'"; } print "\n"; } my $symref="hash"; ${$symref}{key}="value"; print "Keys in 'our %hash':".join(",",keys %$symref)."\n"; BEGIN { dump_symbol_table } END { dump_symbol_table }