$rec = {

    TEXT      => $string,

    SEQUENCE  => [ @old_values ],

    LOOKUP    => { %some_table },

    THATCODE  => \&some_function,

    THISCODE  => sub { $_[0] ** $_[1] },

    HANDLE    => \*STDOUT,

};



print $rec->{TEXT};



print $rec->{SEQUENCE}[0];

$last = pop @{ $rec->{SEQUENCE} };



print $rec->{LOOKUP}{"key"};

($first_k, $first_v) = each %{ $rec->{LOOKUP} };



# no difference calling named or anonymous subs

$answer = &{ $rec->{THATCODE} }($arg);

$answer = &{ $rec->{THISCODE} }($arg1, $arg2);



# must have extra braces on indirect object slot

print { $rec->{HANDLE} } "a string\n";



use FileHandle;

$rec->{HANDLE}->autoflush(1);

$rec->{HANDLE}->print(" a string\n");

