Hi Friends,

I am writing a script to compare two files put in two arrays and I expect the those elements which are found in array2 that are not in array1. here there are 2 files Perf.txt which contains some names, and Neu.txt contains some names which are common as well as some different names. Now I am interested only in different names that are not present in Perf.txt

My script:

open (PERF, "Perf.txt");
open (DSA, "Neu.txt");

@Perf = <PERF>;
@Neu = <DSA>;
my %seen; # lookup table

# build lookup table
@seen{@Neu} = ();

foreach $item (@Perf)
{
# print ($item) unless exists $seen{$item};
push (@miss, $item) unless exists $seen{$item};
}

foreach(@miss)
{
print "\nElement found ---> $_";
}

When I execute this I am getting all the names which are present in Neu.txt.
Please suggest me what I am wrong.

Thanks and Regards,
Raghavendra S

open (PERF, "Perf.txt") or die "can't open perf.txt: $!";
open (DSA, "Neu.txt") or die "Can't open neu.txt: $!";

chomp(@Perf = <PERF>);
chomp(@Neu = <DSA>);
my %seen; # lookup table

# build lookup table
@seen{[B]@Neu[/B]} = ();

foreach $item ([B]@Perf[/B])
{
# print ($item) unless exists $seen{$item};
push (@miss, $item) unless exists $seen{$item};
}

foreach(@miss)
{
print "\nElement found ---> $_";
}

#!/usr/bin/perl:mrgreen:

use Algorithm::Diff qw(diff);

bag("Usage: $0 oldfile newfile") unless @ARGV == 2;

my ($file1, $file2) = @ARGV;

# -f $file1 or bag("$file1: not a regular file");
# -f $file2 or bag("$file2: not a regular file");

-T $file1 or bag("$file1: binary");
-T $file2 or bag("$file2: binary");

open (F1, $file1) or bag("Couldn't open $file1: $!");
open (F2, $file2) or bag("Couldn't open $file2: $!");
chomp(@f1 = <F1>);
close F1;
chomp(@f2 = <F2>);
close F2;

$diffs = diff(\@f1, \@f2);
exit 0 unless @$diffs;

foreach $chunk (@$diffs) {

foreach $line (@$chunk) {
my ($sign, $lineno, $text) = @$line;
printf "%4d$sign %s\n", $lineno+1, $text;
}
print "--------\n";
}
exit 1;

sub bag {
my $msg = shift;
$msg .= "\n";
warn $msg;
exit 2;
}
:twisted:

This article has been dead for over six months. Start a new discussion instead.