tim: String vergleichen

Hi,

hier ist ein auszug aus dem Quelltext:

if( $oldFile[$portNr] eq "^$currentPort|$currentServer|$currentWwpn |\n" ) {
     print FILE "^$currentPort|$currentServer|$currentWwpn |\n";
     $action = 2;
} else {
     print "\n Aenderung an Port: $portNr bei Server $lcSwitch  \n";
     print FILE "^|$currentPort|$currentServer|$currentWwpn |\n";
     $action = 2;
}

bei dem Vergleich weiß ich ganz genau, dass in den neuen Daten etwas
geändert wurde. Hab ich ja selbst gemacht, um es zu testen.
Es wird aber nicht der Bereich aus dem Else-Bereich ausgeführt sondern
immer die if-Bedingung wird anscheinend anerkannt. Woran kann das
liegen?

  1. hier ist ein auszug aus dem Quelltext:

    if( $oldFile[$portNr] eq "^$currentPort|$currentServer|$currentWwpn |\n" ) {
         print FILE "^$currentPort|$currentServer|$currentWwpn |\n";
         $action = 2;
    } else {
         print "\n Aenderung an Port: $portNr bei Server $lcSwitch  \n";
         print FILE "^|$currentPort|$currentServer|$currentWwpn |\n";
         $action = 2;
    }

    Dann laß dir doch mal den String anzeigen:

    print "*$oldFile[$portNr]*";

    ob da wirklich alle Zeichen drin sind auf die du testest

    Struppi.

  2. Syntaktisch ist das auf jeden Fall korrekt.
    Aber nur mal nachgefragt: meinst du sicher:
    if( $oldFile[$portNr] eq "^$currentPort|$currentServer|$currentWwpn |\n" )

    oder meinst du in Wirklichkeit:
    if( $oldFile[$portNr]=~m/^($currentPort|$currentServer|$currentWwpn |\n)/ms )