How to compare two text files

Hi Team,

Could you please help me on below one ..

etrademail1.txt

etDefaultLogin=pdayanan
mail=poojaaragam.dayanand@exchange.etr.comx
employeeNumber=31567

etDefaultLogin=sudrupa
mail=sudrupa.ayanand@exchange.etr.comx
employeeNumber=318967

etDefaultLogin=gurathi
mail=gurothi.anand@exchange.etr.comx
employeeNumber=3189678

maillist2.txt

eruid=dwolinsk
eradesmtpemail=Xdaniel.wolinski@exchange.etr.com

eruid=pdayanan
eradesmtpemail=Xpoojaaragam.dayanand@exchange.etr.comx

eruid=sbtura
eradesmtpemail=Xsbtura.wolinski@exchange.etr.com

eruid=durapda
eradesmtpemail=Xdurapas.upreras@exchange.etr.com

Expected output in separate file output.txt ------> mapping with etDefaultLogin=pdayanan and eruid=pdayanan

etDefaultLogin=pdayanan
eradesmtpemail=Xpoojaaragam.dayanand@exchange.etr.comx
employeeNumber=31567

etDefaultLogin=sudrupa
eradesmtpemail=Xsudrupa.ayanand@exchange.etr.comx
employeeNumber=318967

etDefaultLogin=gurathi
eradesmtpemail=Xgurothi.anand@exchange.etr.comx
employeeNumber=3189678

Thanks,
Srinivasarao K

Invoke this following perl script as:

maillistjoiner maillist etradedatafile

Script is:

#! /usr/bin/perl

use strict;
use warnings;
use File::Basename;

$/ = "\n\n";
$\ = "\n";

my %MAILLIST;
my @FIELDLIST = qw{ etDefaultLogin eradesmtpemail employeeNumber };

# data parse

sub parse($) {
    my $X = {};

    foreach my $entry (split /\n/, $_[0]) {
        my ($key, $value) = $entry =~ m{^\s*([^=]+)=(\S+)};
        next unless defined $key;

        $X->{$key} = $value;
    };

    return $X;
}

# Read maillist

my $list = shift(@ARGV);
die unless defined $list;

open FH, '<', $list;

while (<FH>) {
    my $X = parse($_);

    unless (defined $X->{eruid}) {
    #   print STDERR $list, '(', $., '): missing eruid';
        next;
    }

    unless (defined $X->{eradesmtpemail}) {
        print STDERR $list, '(', $., '): missing eradesmtpemail for ', $X->{eruid};
        next;
    }

    $MAILLIST{$X->{eruid}} = $X->{eradesmtpemail};
}

close FH;

# Read datafile

my $data = shift(@ARGV);
die unless defined $data;

open FH, '<', $data;

while (<FH>) {
    my $X = parse($_);

    unless (defined $X->{etDefaultLogin}) {
    #   print STDERR $data, '(', $., '): missing etDefaultLogin';
        next;
    }

    if (defined $MAILLIST{$X->{etDefaultLogin}}) {
        $X->{eradesmtpemail} = $MAILLIST{$X->{etDefaultLogin}};
    }
    else {
        $X->{eradesmtpemail} = $X->{mail};
    }

    foreach my $key (@FIELDLIST) {
        if (defined $X->{$key}) {
            print $key, '=', $X->{$key};
        }
    }

    print $\;
}

close FH;