in reply to Re: (stephen) Hash Tutorial
in thread Hash Tutorial

stephen,
I came across this thread, and you post, when looking for some help in doing a diff on the keys between two hashes.

Although code didn't answer my question directly it did give me the insiration to come up with the following:

perl -le '%foo = (1,1, 2,2, 3,3); %bar = (2,2, 3,3); print map { $_ if + !$bar{$_} } keys %foo;'

If you run this code you'll see that only "1" get printed.

Not the most robust piece of code ever, but I came up with it off my own back and it does a job for me. So cheers for the insiration!

!unlike

I write my Perl code like how I like my sex: fast and dirty. ;)

Replies are listed 'Best First'.
Re: Re: Re: (stephen) Hash Tutorial
by broquaint (Abbot) on Apr 28, 2003 at 12:21 UTC
    What you want in your snippet there is a grep() not map() as you're filtering out items not applying transforms to them e.g
    shell> perl -le '%a = qw/1 1 2 2 3 3/; %b = qw/2 2 3 3/; \ print grep !$b{$_}, keys %a' 1
    Also note that the map() in your snippet is returning a list of three items - a 1 and two empty strings.
    HTH

    _________
    broquaint

      Thanks broquaint
      I realised this just now and was about to post an update. But you beat me to it. :)

      !unlike

      I write my Perl code like how I like my sex: fast and dirty. ;)