Hi,
Hi Cheatah,
Hoffe, du bist mir nicht bös, wenn ich dir antworte? *g*
»» if($dat{'name'} eq "Tobi" "Vitrex" ) {
»» $dat{'name'} = "Blödel"
}
elsif($dat{'name'} eq "123qwe" ) {
»» $dat{'name'} = "Tobi"
}
elsif($dat{'name'} eq "ewq321" ) {
»» $dat{'name'} = "Vitrex"
}
else { $dat{'name'} = "Blödel"; } # vermute ich
Soweit ich daß mitbekommen habe, werden immer alle Bedingungen
der Reihe nach abgearbeitet. Das heißt:
ist $dat{'name'} = Tobi oder Vitrex? -> nein
-> ist $dat{'name'} = 123qwe? -> ja -> $dat{'name'} = Tobi
-> ist $dat{'name'} = ewq321? Nein.
So, und hier liegt jetzt das Problem: das else wird immer der nächsten
freien Bedingung zugteilt. Das heißt:
$dat{'name'} ist NICHT ewq321 -> $dat{'name'} = Blödel
mit anderen Worten, man sollte das ganze vielleicht umpacken in
2 Blöcke, die in sich unterteilt sind:
if ($dat{'name'} eq "Tobi" "Vitrex")
{
$dat{'name'} = "Blödel";
} else {
if($dat{'name'} eq "123qwe")
{
$dat{'name'} = "Tobi";
} else {
if ($dat{'name'} eq "123ewq")
{
$dat{'name'} = "Vitrex";
}
}
}
Also: wenn $dat{'name'} = Tobi oder Vitrex, dann
$dat{'name'} = Blödel; wenn nicht:
wenn $dat{'name'} = 123qwe, dann $dat{'name'} = Tobi; wenn nicht:
wenn $dat{'name'} = 123ewq, dann $dat{'name'} = Vitrex.
Ich weiß, ist umständlich, sollte aber funzen *g*
Außerdem würde ich mir überlegen, ob du nicht statt
if ($dat{'name'} eq "Tobi" "Vitrex")
if ($dat{'name'} eq "Tobi" $dat{'name'} eq "Vitrex")
schreibst. Ist zwar länger, aber in allen anderen Sprachen, die ich
kenne, werden die Bedingungen miteinander verknüpft. Ich weiß zwar
nicht, wie das in Perl ist, aber in anderen Sprachen wäre der
zweite Ausdruck (also "Vitrex") immer TRUE, da "Vitrex" größer 0
ist ,) Wie gesagt, ich weiß nicht, ob die Konstruktion oben eine
Eigenart von Perl ist, aber ich würds einfach mal versuchen ,)
Ich hoffe es gibt überhaupt eine Lösung...
Nicht verzweifeln ,) es gibt IMMER eine Lösung ,)
mfg
CK1
P. S.: Die Angaben sind, wie immer, ohne Gewähr *g*