#!/usr/bin/perl

sub members_to_numbers {
    my ( @names,   $name );
    my ( %numbers, $number );

    $number = 0;
    while ( my $set = shift @_ ) {
        while ( defined ( $name = each %$set ) ) {
            unless ( exists $numbers{ $name } ) {
        $numbers{ $name   } = $number;
        $names  [ $number ] = $name;
        $number++;
            }
        }
    }

    return ( $number, \%numbers, \@names );
}

($number, $numbers, $names) = members_to_numbers( { kangaroo => undef,
						    wombat   => undef,
						    opossum  => undef } );

print "$number: @$names\n";

while (($key, $value) = each %$numbers) {
    print "$key = $value\n";
}
