Anzeige:
Ergebnis 1 bis 6 von 6

Thema: perl :: dateien vergleichen

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71

    perl :: dateien vergleichen

    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
    Code:
    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 ;
    }

  2. #2
    Registrierter Benutzer
    Registriert seit
    11.11.2005
    Beiträge
    51
    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

    Code:
    { print "Zeile $i ist unterschiedlich: $Lines2[$i]!";}
    MfG
    Rahul
    Geändert von RAHUL (10-07-2006 um 13:06 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    1. in der ausgabe wird immer die letzte zeile unterschlagen
    Code:
    for ($i = 0; $i <= $#Lines1; $i++)
    {
    ...
    }

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.11.2005
    Beiträge
    51
    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

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Hi,
    "$#Lines" sollte doch eigentlich die Anzahl der Elemente in dem Array wiedergeben,
    nee - nicht ganz.

    Code:
    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

  6. #6
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71
    danke an beide helfer^^

    hat genau so hingehaut :-)

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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •