in reply to making arrays that act like hashes at runtime

Just for completeness' sake (as the others here said, it is propably not a good idea to use this 'feature'):

a quote from "Object Oriented Perl" by Damian Conway:

--- <quote>

<quote> You can add new entries to a pseudo-hash, but it's a two step procedure. First, you add a new key-to-index mapping:
$pseudo_hash->[0]->{"z"} = @{$pseudo_hash};
which maps the key "z" onto the first unused index in the pseudo-hash array. After that, you can access the new entry directly, to assign it a value:
$pseudo_hash->{"z"} = "value z";
</quote> ---- </quote>

which would translate to something like this in your example:
my $a = [ {first=>1, second=>2}, "hello", "there" ]; print "$a->{first}\t$a->{second}\n"; $a->[0]->{'third'} = @{$a}; $a->{'third'} = "foo"; print "$a->{first}\t$a->{second}\t$a->{third}\n";

---- kurt