Hoscha: Befehl; (index($variable1,$variable2) >= 0 )

Hallo zusammen!

ich hätte da ein weiteres Problem (langsam werde ich zum Dauergast):
Was ist an diesem Code falsch?

for($a=0; $a<$laengebands; $a++) {
 foreach(@configzeilen) {
  if(index($bands[$a],$_) >=0) {
    print "Die ConfigDatei enthält folgende Bands: $bands[$a]\n";
  }
 }
}

Zur Erklärung: Durch die äußere for-Schleife wird die foreach-Schleife für jedes Element der Liste @bands durchlaufen. In der foreach-Schleife wird dann das jeweilige Element von @bands mit jedem Element von @configzeilen verglichen. Wenn Teile davon im Element von @bands vorkommen, sollte eine Ausgabe erfolgen.
Diese kommt aber nicht am Bildschirm, obwohl einige Übereinstimmungen vorhanden sind.
Wenn ich es beispielsweise dahingehend abändere, dass es:
index($bands[$a],"Beispielstext")
heisst, klappts komischerweise.

Danke im Voraus,
Holger

  1. Moin, moin!

    Ich hätte da den Verdacht, daß $_ durch die if- oder index-Anweisung neu gesetzt wird. Aber das ließe sich durch das Ausgeben vor und nach der if-Anweisung verifizieren.

    Verifizieren ist überhaupt ein gutes Stichwort: Laß Dir $bands[$a] und $_ ausgeben, um zu sehen, welche Werte überhaupt verwendet werden.

    Dann bliebe da noch diese Variante, wenn $_ das Problem sein sollte:

    ...
    foreach $configzeile (@configzeilen) {
     if(index($bands[$a],$configzeile) >=0) {
    ...

    Norbert

  2. Hallo,

    ich hätte da ein weiteres Problem (langsam werde ich zum Dauergast):
    Was ist an diesem Code falsch?

    for($a=0; $a<$laengebands; $a++) {
    foreach(@configzeilen) {
      if(index($bands[$a],$_) >=0) {
        print "Die ConfigDatei enthält folgende Bands: $bands[$a]\n";
      }
    }
    }

    Hast Du berücksichtigt, daß beim Einlesen aus einer Datei auch die Zeilenumbrüche mit eingelesen werden? index() überprüft nun, ob $_ in $band[$a] vorkommt, allerdings auch eventuell vorhandene Zeilenumbrüche.

    Grüße
      Klaus