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