Portál AbcLinuxu, 10. listopadu 2025 23:23
Moc diky
$conn->add_handler (376, sub { $self->on_connect ($conn)) });
Vyreseno
Predavam ji konstruktoru 'new', a pak handluju poprve volanou fci on_connect, ktere pochopitelne musim predat nejake parametry, jednim z nich je prave objektova instance $conn.
Pokud mas jiny zpusob, jak dostat do fce parametry, nez zavolanim te dane fce s danymi parametry, ozvi se
Anebo jsi narazel na to, ze bych mohl pouzit $conn->join( $conn->{channel} ); samostatne primo v konstruktoru? To opravdu nemohl, ponevadz to musim protahnout handlerem 'add_handler'
Pokud mas jiny zpusob, jak dostat do fce parametry, nez zavolanim te dane fce s danymi parametry, ozvi seAno, globální proměnnou. Někde totiž musíš mít inicializaci
$conn, pravděpodobně ve stylu $conn = package->new(), tak co ti brání mít $conn jako glob. proměnnou (nebo lexikální proměnnou definovanou dostatečně vysoko, aby ji viděl i handler)?
Tím, že uděláš sub { $self->on_connect ($conn) }, dostaneš přinejmenším vedlejší efekt, který tě může a nemusí trápit: v těle on_connect budeš mít pořád stejnou hodnotu $conn, jak byla když se volalo add_handler, i kdyby se skutečná proměnná $conn mezitím změnila.
No $conn je navrat metody modulu, ktery vraci tu objektovou instnanci, cili pokud umi tim zpusobem, co jsi naznacil, perl pristupovat ke globalnim promennym, nebudu vahat 
S perlem delam teprve par tydnu a zacal jsem z prostredka, ponevadz zaklady algorytmizace uz mam za sebou v s jinymi jazyky - byla by to nuda
Takhle rovnou zkousim psat IRC bota a na tom se ucim defacto cely perl.... kazdopadne diky za radu 
btw, pozri si perlmonks.org, riešenia otázok sú celkom poučné
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.