0

Hi,
I have two text files.
The first one has a list of words , like the following :
File 1.txt

Laura
Samuel
Gerry
Peter
Maggie

The second one has paragraphs on it. For e.g. :
File2.txt

Laura
is
about
to
meet
Gerry
and
is
planning
to
take
Peter
along

All is want the program to do is , look for common words and print "Match" beside the matching words in File2.txt or to a third output file.
So the desired output should look like this.

    Laura | MATCH
    is
    about
    to
    meet
    Gerry | MATCH
    and
    is
    planning
    to
    take
    Peter | MATCH
    along

I have tried the following code , however I am not getting the desired output. Please help

use warnings;
use strict;
use Data::Dumper;
my $result = {};

my $first_file  = shift || 'File1.txt';
my $second_file = shift || 'File2.txt';
my $output = 'output2.txt';

open my $a_fh, '<', $first_file  or die "$first_file: $!";
open my $b_fh, '<', $second_file or die "$second_file: $!";
open (OUTPUT,'>'.$output) or die "Cannot create $output.\n";

while(my $line = <$a_fh>) {
    chomp;
    next if /^$/;
    $result->{$_}++;    
}
while(my $line = <$b_fh>) {
    chomp;
    next if /^$/;
    if ($result->{$_}) {
        delete $result->{$_};
    $result->{join " |"=> $_,"MATCH"}++;
    }
    else {
        $result->{$_}++;
    }
}
{   $Data::Dumper::Sortkeys = 0;
    print OUTPUT Dumper $result;
}

However , the output that I am getting is like this.

   Laura  | MATCH
    Samuel | MATCH
    take
    Maggie | MATCH
    Laura
    about
    to
    Gerry
    meet
    Gerry | MATCH
    and
    is
    Maggie |MATCH
    planning
    to
    Peter |MATCH
    take
    Peter |MATCH
  • the output is not in a paragraph format , neither its printing MATCH for all matches.
    Please advise.

Edited by Koel

2
Contributors
2
Replies
16
Views
9 Months
Discussion Span
Last Post by Koel
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.