http://www.perlmonks.org?node_id=963353


in reply to Hash of hashes: Check if the element is present in previous hash table

A few suggestions:

All that aside, I agree with Riales: the problem as stated in the OP can be solved with a simple hash. If you don't agree, then you must have some problem other than the one you described in the OP.

Also, I couldn't understand your reply to Riales, so here's an alternate version of the approach he suggested -- if you still have some problem that this doesn't solve, you'll need to describe that other problem.

I'll base the input data handling on the sample data as you presented it (rather than on the OP code snippet):

use strict; use warnings; my %words; for my $fnum ( 1 .. 4 ) { open( I, '<', "File$fnum.txt" ) or die "File$fnum.txt: $!\n"; while (<I>) { chomp; s/^[\s\d.]+//; # remove initial digit(s), period, whitespace, + if any $words{$_} .= $fnum unless ( exists( $words{$_} ) and $words{$_} =~ /$fnum$/ ) +; } } print "Words found in all four input files:\n"; for ( sort keys %words ) { print "$_\n" if ( $words{$_} eq '1234' ); }
  • Comment on Re: Hash of hashes: Check if the element is present in previous hash table
  • Download Code