duck has asked for the wisdom of the Perl Monks concerning the following question:
INPUT FILE 2:CSWcommon,1.4.5 CSWexpat,1.95.7 CSWggettext,"0.14.1,REV=2005.06.29" CSWgmake,3.81
CODE:CSWcommon,1.4.5 CSWexpat,1.95.7 CSWggettext,"0.14.1,REV=2005.06.29" CSWgmake,3.81
OUTPUT:#!/usr/bin/perl # ## Define variables # $EMPTY=""; # ## Open file 1 for input and place contents into hash table # $FILENAME1 = shift; open(FILE1,"./$FILENAME1") || die "USEAGE ./checker file1 file2\n"; while(<FILE1>){ @PACKAGE1 = split(',',$_,2); $FILE1PKG{$PACKAGE1[0]}{$PACKAGE1[1]} = $_; #%FILE1PKG=($PACKAGE1[0]=>{Version=>$PACKAGE1[1]} ); } close FILE1; # ## Open file 2 and compare the two this will create several outputs # $FILENAME2 = shift; open(FILE2,"./$FILENAME2") || die "USEAGE ./checker file1 file2\n"; while(<FILE2>){ @PACKAGE2 = split(',',$_,2); $FILE2PKG{$PACKAGE2[0]}{$PACKAGE2[1]} = $_; } close FILE2; for $MASTERPKG ( keys %FILE1PKG ){ print "FILE1 PACKAGE: $MASTERPKG VERSION: ",(keys %{ $FILE1PKG{$ +MASTERPKG}}); $VERSION1 = $FILE1PKG{$MASTERPKG}; $VERSION2 = $FILE2PKG{$MASTERPKG}; print "VERSION1: $VERSION1 VERSION2: $VERSION2\n"; print "FILE2 PACKAGE: $MASTERPKG VERSION: ",(keys %{ $FILE2PKG{$ +MASTERPKG}}); if ($VERSION1 eq $VERSION2) {print "SAME\n"}; }
I am fairly new to using perl and most of the answers I have seen to simular issues are complete greek to me. Thank you DuckFILE1 PACKAGE: SUNWkmp2r VERSION: "5.0,REV=2001.10.01.15.47" VERSION1: HASH(0x93f5458) VERSION2: HASH(0x945a948) FILE2 PACKAGE: SUNWkmp2r VERSION: "5.0,REV=2001.10.01.15.47"
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Hash comparing
by jethro (Monsignor) on Nov 05, 2008 at 20:38 UTC | |
by duck (Initiate) on Nov 05, 2008 at 21:52 UTC | |
|
Re: Hash comparing
by JadeNB (Chaplain) on Nov 05, 2008 at 20:26 UTC | |
|
Re: Hash comparing
by jwkrahn (Abbot) on Nov 05, 2008 at 20:21 UTC | |
by repellent (Priest) on Nov 05, 2008 at 22:08 UTC | |
by jwkrahn (Abbot) on Nov 05, 2008 at 22:27 UTC |