PERL, problem s hodnotou promenne
d.petr
d.petr na post.cz
Pátek Říjen 9 12:35:20 CEST 2015
Dobrý den,
řeším tady takový pro mě nepochopitelný problém v PERLu. Mám takovýhle
kousek programu v konstrukci given-when
when ($_ < (nejaky_vyraz)) {
$Nova = $Sdilene{CO} - 0.2 * $Sdilene{PV};
if ($Sdilene{SL} > $Nova) {
$Sdilene{SL} = $Nova;
$Stav = 2;}}
a pokud program touto částí projde, vrátí se mi vždy $Sdilene{SL}==1 (má
hodnotu 1). Přitom $Nova má hodnotu větší, než 1.
Zajímavé je, že když jsem si dovnitř bloku when zařadil různé průběžné
výpisy proměnných, abych sledoval, kde se to pokazí, všechny proměnné
nabývaly hodnot správných, dokonce i ta $Sdilene{SL}.
Teď jsem zjistil, že stačí změnit řádek uvnitř podmínky na
$Sdilene{SL} = 1 * $Nova;
a už je taky výsledek v $Sdilene{SL} správný. Zkrátka když jakkoliv
použiju proměnnou $Nova před přiřazením její hodnoty do $Sdilene{SL},
vykoná se to celé dobře. Když přiřadím hned, vloží se 1. Přitom všechny
použité proměnné jsou číselné.
Máte pro toto chování někdo vysvětlení? PERL 5.14.2.
Díky
Petr
Další informace o konferenci Linux