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