You will need to understand "array slices", and references.#!usr/bin/perl use strict; use warnings; my ($infile1 ,$infile2) = @ARGV; open (my $in1 ,"<", $infile1) or die "Cannot open '$infile1':$!\n"; open (my $in2, "<", $infile2) or die "Cannot open '$infile2':$!\n"; my @values; while ( <$in1> ){ chomp; my @one = split; next unless scalar(@one) >= 3; # Must have at least 3 push @values, [@one[0..2]]; } close $in1; while (<$in2>){ chomp; my @two = split; next unless scalar(@two) >= 5; # Must have at least 5 next unless grep { $_->[0] eq $two[0] and $_->[1] eq $two[3] and $_->[3] eq $two[4] } @values; print join("\t",@two[0,3,4]) , "\n" } close $in2;
"You're only given one little spark of madness. You mustn't lose it." - Robin Williams
In reply to Re: Compare three columns of one file with three columns of another file in perl
by NetWallah
in thread Compare three columns of one file with three columns of another file in perl
by anonym
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |