Portál AbcLinuxu, 11. května 2025 10:26

Dotaz: Jaka je pricina techto warnings? ( Perl )

18.10.2009 22:50 Mr.S1lent.cz
Jaka je pricina techto warnings? ( Perl )
Přečteno: 226×
Odpovědět | Admin
Zdravim, zrovna ladim jeden svuj perlovsky program, ale setkal jsem s warnings, ktere mi nic nerikaji, ponevadz nikde nevidim chybu, ukazoval jsem to i svemu znamemu, ktery perlem zije a defacto me na nej navedl, ale na prvni pohled by to melo byt udajne ok ( na ten druhy byl moc busy ) :-)

Zde jsou ty warnings: "my" variable $pkg masks earlier declaration in same scope at /usr/local/share/perl/5.10.0/IRCProxy/Event/ServerEvent.pm line 105. "my" variable @input masks earlier declaration in same scope at /usr/local/share/perl/5.10.0/IRCProxy/Event/ServerEvent.pm line 105. "state" variable @_ masks earlier declaration in same scope at /usr/local/share/perl/5.10.0/IRCProxy/Event/ServerEvent.pm line 105.

a zde je onen modul: http://www.pastebin.cz/24340

Vim, ze tam tech chyb je vice, ale ty bych uz mel zvladnout odstranit snad sam :-)

Jinak vim, ze tento modul ma spoustu zbytecnych a nedochytanych casti. Muj cil je jej rozchodit a pote tyto casti prepsat, popr pozmenit cely modul - prece jenom se to teprve ucim :-)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.10.2009 05:46 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Jaka je pricina techto warnings? ( Perl )
Odpovědět | | Sbalit | Link | Blokovat | Admin
syntax error at line 65, near ") {"
Tímhle (nebo něčím dalším) vykolejíte parser tak, že si myslí, že ř. 105 je součástí předchozí funkce. Nejprv opravujte chyby a až pak warningy. Váš známej si to měl zkusit přeložit.
In Ada the typical infinite loop would normally be terminated by detonation.
20.10.2009 09:17 NeoV | skóre: 23
Rozbalit Rozbalit vše Re: Jaka je pricina techto warnings? ( Perl )
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nuz vyzera to, ze vacsiu cast konstruktoru (funkcia new) bude treba prepisat:

- na riadku 20 mate zakladnu chybu - klucova fcia bless NEMA predsa navratovu hodnotu; takisto ako prvy atribut ma byt scalar - smernik na novovytvoreny objekt, podla konvencie sa zvykne premenna pomenovat $self (vy tam mate anonymny smernik - hash), s ktorou by ste mal dalej pracovat ($self); ako druhy atribut ma byt nazov classy (vo Vasom pripade $pkg) -> je to len obycajny nazov triedy(package) s ktorym vy ale narabate akoby bol objekt. Takisto v kode narabate aj s udajnou navratovou hodnotou fcie bless - $event co som vobec nepochopil :-).

spravne by to teda malo vyzerat nejako takto:
my $self;
bless($self,$pkg);
vacsinou sa do $self este namapuju ostatne atributy funkcie new, s ktorymi sa da potom dalej jednoduchsie pracovat a pristupovat k nim:
my $self = { kluc => atribut,...};
bless($self,$pkg);
taktiez este taka mala poznamka, funkcia new by mala (!!!) vracat scalar hodnotu -> smernik na object (teda $self).

good luck...
20.10.2009 09:26 NeoV | skóre: 23
Rozbalit Rozbalit vše Re: Jaka je pricina techto warnings? ( Perl )
Jo ad. Vas znamy Perlista: na najdenie tejto zakladnej a banalnej chyby staci par sekund - tak bud Vas kamarat ignoruje alebo tym Perlom moc nezije :-)
20.10.2009 13:50 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Jaka je pricina techto warnings? ( Perl )
Co se týče bless, tak to má dobře, podívejte se pořádně na dokumentaci k bless.

Co se týče returnu, tak tam si nejsem úplně jistej, co má ta funkce dělat. Teoreticky vrací správnou hodnotu, kvůlivá tomu if bloku na konci, ale je do dost prasečina. Lepší by bylo tam dát explicitně return.

Každopádně chyba je primárně v syntaxi, viz příspěvek výše.
In Ada the typical infinite loop would normally be terminated by detonation.
20.10.2009 14:24 NeoV | skóre: 23
Rozbalit Rozbalit vše Re: Jaka je pricina techto warnings? ( Perl )
ups... moja chyba... :-D

hambim sa v kute...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.