Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: Foreach loop explanation

by eyepopslikeamosquito (Chancellor)
on Nov 24, 2012 at 00:11 UTC ( #1005326=note: print w/replies, xml ) Need Help??

in reply to Foreach loop explanation

Using a regex does not seem appropriate here because the lines may contain regex metacharacters. The sample code below assumes you want exact matches. You may need to tailor it for things like white space, case sensitivity, and so on.

use strict; use warnings; @ARGV == 2 or die "usage: $0 file1 file2\n"; my $file1 = shift; my $file2 = shift; open my $in1, '<', $file1 or die "unable to open '$file1': $!"; open my $in2, '<', $file2 or die "unable to open '$file2': $!"; chomp( my @nomi = <$in1> ); chomp( my @indirizzi = <$in2> ); close $in1; close $in2; # Remove any blank or empty lines (optional, depends on your data file +s). @nomi = grep { !/^\s*$/ } @nomi; @indirizzi = grep { !/^\s*$/ } @indirizzi; # Create a hash of lines in @nomi. my %in_nomi; foreach my $item (@nomi) { $in_nomi{$item}++ } # Check if each line in @indirizzi is in nomi. # Note: does not check for duplicate lines in @indirizzi. foreach my $line (@indirizzi) { print "$line\n" if $in_nomi{$line}; }

See perlfaq4, especially the frequently asked questions:

  • How can I remove duplicate elements from a list or array?
  • How can I tell whether a certain element is contained in a list or array?
  • How do I compute the difference of two arrays?
  • How do I compute the intersection of two arrays?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005326]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (8)
As of 2017-04-24 22:58 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (447 votes). Check out past polls.