PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : perl :: dateien vergleichen



Chakotay
09-07-2006, 15:44
ich hab ein kleines problem mit dem vergleichen von 2 dateien

1. in der ausgabe wird immer die letzte zeile unterschlagen
(dabei wollte ich eig das alle zeilen verglichen werden :) )

2. wie bring ich das script dazu wenn ne zeile unterschiedlich iss
genau diese zeile mit zu posten ?
(also die zeile aus der $VERSNEW2 soll gepostet werden ,wenn se nen unterschied zu $VERSOLD hat :) )

hier mal das was ich immo hab :confused:

sub test_test_test
{
open(ALT,"<$VERSOLD") ;
my @Lines1 = <ALT> ;
close (ALT) ;
open(NEU,"<$VERSNEW2") ;
my @Lines2 = <NEU> ;
close NEU ;

for ($i = 0; $i < $#Lines1; $i++)
{
if($Lines1[$i] eq $Lines2[$i])
{ print "Zeile $i ist gleich";}
else
{ print "Zeile $2 ist unterschiedlich $ZEILENTEXT !";}
}
return 1 ;
}

RAHUL
10-07-2006, 13:02
Hallo,

zu Frage 1 habe ich keine Antwort, finde ich mal wieder sehr eigenartig,

aber zu zwei sollte sich einfach lösen lassen, wenn ich mich nicht irre, mit


{ print "Zeile $i ist unterschiedlich: $Lines2[$i]!";}

MfG
Rahul

michael.sprick
10-07-2006, 13:16
1. in der ausgabe wird immer die letzte zeile unterschlagen


for ($i = 0; $i <= $#Lines1; $i++)
{
...
}

RAHUL
10-07-2006, 13:29
Aber warum ist das so,

"$#Lines" sollte doch eigentlich die Anzahl der Elemente in dem Array wiedergeben,
der Array startet bei 0, also sollte doch eigentlich "<" ausreichen.

MfG
Rahul

michael.sprick
10-07-2006, 13:52
Hi,

"$#Lines" sollte doch eigentlich die Anzahl der Elemente in dem Array wiedergeben,
nee - nicht ganz.



my @Array = (
'Element 1',
'Element 2',
'Element 3',
'Element 4'
);

my $HighestIndex = $#Array; # =3
my $Elements = scalar(@Array); # oder auch $Elements = @Array; # =4


$#Array gibt nicht die Anzahl der Elemente, sondern immer nur den höchsten Index zurück. die anzahl der enthaltenen Elemente erhälst Du, wenn Du das Array im skalaren Kontext benutzt, wobei die im Beispiel benutzte Funktion "scalar()" eigentlich nicht nötig ist....

hth, Michael ;)

Chakotay
10-07-2006, 17:39
danke an beide helfer^^

hat genau so hingehaut :-)

dies hier mausert sich langsam zu meinem lieblings board :-D