in reply to Creating a hash with key generated by a sub?

You had a few simple errors. This works:

use Digest::MD5 qw(md5_hex); use strict; use warnings; my $secret = "applepie"; sub get_md5 { md5_hex("$secret" . "$_[0]") }; my @array = qw(foo bar baz); my %md5_hash_broken = (map {&get_md5($_) => $_} @array); my %md5_hash = ( &get_md5('foo') => "foo", &get_md5('bar') => "bar", &get_md5('fubar') => "baz", ); my ($x, $y); while (($x, $y) = each %md5_hash) { print "$x => $y\n"; }

The errors (see my changes):

Replies are listed 'Best First'.
Re^2: Creating a hash with key generated by a sub?
by smullis (Pilgrim) on Nov 12, 2004 at 13:21 UTC

    Thanks for this steves...

    One point of interest - I thought that $_ was implicitly passed to map?
    The %blah = (map {&get_md5, $_} @array); worked for me fine...

    Cheers,

    SM

      I should clarify: In other places, get_md5() is passed with one argument, which I assumed you wanted concatenated to $secret to make the key. The way map was originally set up, it was not passing anything to get_md5() -- it was calling it with no arguments and using $_ as the hash value. Unless I'm missing something ...