I think that you are making this too complicated. Lets see if we can understand the real problem, You have two files that have some common fields between them, you want to see which file has something the other file doesn't. Taking your file information from above,
File 1,
1141286452,ServerA,Disk Full,Arb data,other,stuff
1141286737,ServerB,Net Down,Arb data,other,stuff
1141286737,ServerC,Disk Full,Arb data,other,stuff
File2,
1141286737,ServerB,Net Down
1141286780,ServerD,Bit Bucket Missing
You can probably boil this down to the data that you want to string that would be,
File 1,
1141286452,ServerA,Disk Full
1141286737,ServerB,Net Down
1141286737,ServerC,Disk Full
File2,
1141286737,ServerB,Net Down
1141286780,ServerD,Bit Bucket Missing
Now lets take the data that you want to compare and stick in a hash. The value assigned in the hash relates to which file it came from. 1 means it came from file 1, 2 from file 2 and 3 means from file 1 and 2.
my %index;
foreach my $entry (@file1) {
if (not exists $index{$entry}) {
$index{$entry} = 1
}
}
foreach my $entry (@file2) {
if (not exists $index{$entry}) {
$index{$entry} = 2
}
else {
$index{$entry} += 2;
}
}
foreach my $entry (keys %index) {
if ($index{$entry} == 1) {
print "Entry $entry is only in file one\n";
}
elsif ($index{$entry} == 2) {
print "Entry $entry is only in file two\n";
}
elsif ($index{$entry} == 3) {
print "Entry $entry is in both files\n";
}
else {
print "Entry $entry is screwed up!\n";
}
}
Now you have a hash with all the unique entries and what files that they came from. Which is what I assume that you really want.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.