Moin Moin!
»» Hab das Problem jetzt fast gelöst nur geschieht die Zuweisung:
»»$testhash{$keywert}={eval $zeile};
»» in einer Schleife und darin in einem if else, aber die Werte der Zuweisung scheinen nur in dem Bereich gültig zu sein und nicht global.Sagt Dir XY-Problem irgendetwas?
Erkläre Dein eigentliches Problem, dann kannst Du auch eine vernünftige Lösung bekommen. Du baust hier riesige Sicherheitslücken: Was passiert, wenn Du eine Zeile "
rm -rf /
" bzw. "format c: /q /u
" einliest?Alexander
Ich hab schon abgefangen das diese Zeile in diesem Format ist!
Also so sieht es bisher aus:
my %test = ();
my %ergebnis = ();
foreach my $zeile(@array){#@array sind die eingelesenen Zeilen
if(...){#Prüfung auf richtige Zeile - Art: "name" => "wert"
%test = eval $zeile;
$actKey = $test{'name'};
$ergebnis {$actKey}={eval $zeile};
print $ergebnis {$actKey}{'name'},"\n"; #Ausgabe des Wert - richtig
}
...
}
while( my ($k, $v) = each %ergebnis) {
print $ergebnis{$k}{'name'},"\n"; #Problem!
}
Fehlermeldung:
Use of uninitialized value in print at ./mein_programm line xx.
Und diese Line ist das print in der while-Schleife.
Auch ein print in anderen if-Anweisungen innerhalb der for-Schleife meldet den selben Fehler.
Hoffe das ist genauer - das ist der komplette Code.