Gabor HALASZ <halas...@freemail.hu> írta (2012. január 31. 14:07):
> Helo!
>
> Mivel az utolso leveledet kinyirta a freemail, nem igazan tudok ra
> valaszolni, de amit kihamoztam belole, az alapjan meg mindig nem mukodik
> (ha tevednek, sorry):

Jó lenne, ha tévednél, de sajnos nem tévedsz. :(

> Az elso levelemben is irtam, valamint Kiss Gabor is ugyanazt irta neked,
> de akkor kifejtem bovebben: azert nem mukodik, amit irtal, mert a
> perlnek nincs param funckioja( man perlfunc ), csak a CGI->new altal
> visszaadott objektumnak van param metodusa. Te szepen eltaroltad a
> $q-ban a CGI objektumodat, aztan hivogattad sorban az objektum
> metodusait, kiveve a paramnal, ahol lefelejtetted elole az objektumot es
> a dereference operatort, a $q-> -t. Hiba azert nem keletkezett, mert
> kihagytad a use strict-et az elejerol, a sok -t kapcsolo meg felesleges,
> mert irtal use warning-ot (illetve van egy bonyolultabb magyarazatom is,
> de azt most hagyjuk).
> Ha azon a gepen, amin hasznalni akarod, nem telepithetsz, akkor egy
> masik gepen kuld at a kododat a perltidy-n (olvashato formaba onti) es a
> perlcritic-en (szol a durva programozasi hibakert).

Nem vitatkozni akarok, de a tapasztalataim szerint a Perl-nek van
param funkciója... csak példaképpen egy idézet a CGI doksiból:

USING THE FUNCTION-ORIENTED INTERFACE
...
   use CGI 'param','header';
...
   $zipcode = param('zipcode')
...

(Egyébként több helyen is szerepel ebben a formában... az más kérdés,
hogy objektum orientáltan szebb.)

A "sok T" már nem tudom minek van (nyilván valami másik progit írtam
át a 2. sortól kezdve...), de szerintem nem sok vizet zavar.

Az use strict ott figyel a 3. sorban, eredetileg benne se volt, de
beleraktam, hátha segít rájönni, hogy hol hibázok.

A változóim szépen fel is töltődnek (a változók értékének kiíratásánál
látom is az új értéket) a param('...') funkcióval (vagy metódussal, ha
úgy jobban tetszik), csak az a nyomorék textfield nem veszi fel az új
értéket. És nem értem, hogy miért...?

Idemásolom a (szerintem) lényeges sorokat (ezt remélem átengedi a freemail is):
...
my ($lepeskoz,$lepeskoz_tol)=($q->param('lepeskoz'),$q->param('lepeskoz_tol'));
...
if ($q->param('elore')) { $lepeskoz_tol=$lepeskoz_tol+$lepeskoz }
...
print ...
      $q->textfield(-name=>'lepeskoz_tol',
-value=>$lepeskoz_tol),"-tól",br,"\n",
      $q->textfield(-name=>'lepeskoz',     -value=>$lepeskoz),
"(lepeskoz)",br,"\n",
...

Köszönettel:
kjt
_________________________________________________
linux lista      -      linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux

válasz