Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re^2: Common hash keys

by FunkyMonk (Canon)
on Jun 07, 2008 at 10:41 UTC ( #690825=note: print w/ replies, xml ) Need Help??

in reply to Re: Common hash keys
in thread Common hash keys

DB<2> $seen{$_}++ for (keys(%a), keys(%b)) DB<3> x grep { $seen{$_} > 1 } keys(%seen)
You can combine these two into a single statement:
use Data::Dump; my %a = ( a => 1, b => 2, c => 3 ); my %b = ( b => 2, c => 1, d => 4 ); my %seen; pp grep { $seen{$_}++ } keys %a, keys %b;

Update: Don't use state variables for this. See lodin's reply

Or, with 5.10

pp grep { state %seen; $seen{$_}++ } keys %a, keys %b;

Unless I state otherwise, all my code runs with strict and warnings

Comment on Re^2: Common hash keys
Select or Download Code
Replies are listed 'Best First'.
Re^3: Common hash keys
by lodin (Hermit) on Jun 08, 2008 at 06:32 UTC

    Be careful with that state. It won't do what (I think) you want.

    use 5.010; sub foo { my ($a, $b) = @_; sort grep { state %seen; $seen{$_}++ } keys %$a, keys %$b } my %a = ( a => 1, b => 2, c => 3 ); my %b = ( b => 2, c => 1, d => 4 ); say join ' ', foo(\%a, \%b); say join ' ', foo(\%a, \%b); __END__ b c a b b c c d
    Here you should just stick with my.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://690825]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (10)
As of 2016-02-11 12:00 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (368 votes), past polls