$rec = { TEXT => $string, SEQUENCE => [ @old_values ], LOOKUP => { %some_table }, THATCODE => \&some_function, THISCODE => sub { $_[0] ** $_[1] }, HANDLE => \*STDOUT, }; my %hash = %$rec; while ( ( $key, $value ) = each %hash ) { print "$key = $value\n" if( $key =~ /^TH/ ); } #### C:\>perl p14.pl THISCODE = CODE(0x155ad54) THATCODE = CODE(0x155ac40) C:\> #### $rec = { TEXT => $string, SEQUENCE => [ @old_values ], LOOKUP => { %some_table }, THATCODE => \&some_function, THISCODE => sub { $_[0] ** $_[1] }, HANDLE => \*STDOUT, }; my %hash = %$rec; while ( ( $key, $value ) = each %hash ) { print "$key = $value\n" if( $key !~ /^TH/ ); } #### C:\>perl p14.pl TEXT = SEQUENCE = ARRAY(0x15550f0) LOOKUP = HASH(0x15551b0) HANDLE = GLOB(0x155a5c4) C:\>