Irssi::command_bind tulosta => sub { open(KAHVA,'http://tosi.gurut.be/~tongle/filu.txt') || die('Ei onnistunu filun avaamine!'); @rivit = <KAHVA>; close(KAHVA); print @rivit; };
Ladattaessa skriptiä tulee tällasta virhettä:
00:51 -!- Irssi: Error in script botti: 00:51 Global symbol "@rivit" requires explicit package name at (eval 369) line 15. 00:51 Global symbol "@rivit" requires explicit package name at (eval 369) line 17.
:/
Muokkaa kolmatta riviä näin:
my @rivit = <KAHVA>;
Joku Perl-osaaja voikin sitten kertoa miksi tuo my tarvitaan tuonne, minä en osaa Perliä.
Olis vielä toinen ongelma:
thread failed to start: Can't call method "command" on an undefined value at (eval 224) line 32.
Eli 32 rivi on toi: $server->command("/msg #kanava ".$rivi);
Tarkotus olis lähettää viesti kanavalle.
sub run { my ($server); my $filu = '/home/tongle/public_html/filu.txt'; open(KAHVA,$filu) || die('Tiedoston avaaminen epäonnistui!'); my @rivit = <KAHVA>; close(KAHVA); if(@rivit != ""){ #Jos tiedosto ei ole tyhjä, tulostetaan sen sisältö ja tyhjennetään se foreach my $rivi (@rivit){ $rivi =~ s/\n//; ###### MITEN SAAN TÄN TOIMIMAAN? ###### $server->command("/msg #kanava ".$rivi); ####################################### } open(KAHVA,">$filu") || die('Tiedoston avaaminen epäonnistui!'); print KAHVA ''; close(KAHVA); } }
Oletan, että tämä run on bindattu johonkin komentoon, tyyliin Irssi::command_bind('komento', 'run');
. Irssin dokumentaation perusteella muuta kolmatta riviä näin:
my ($data, $server, $witem) = @_;
Tämä siis lukee runille annetut parametrit muuttujiin. $datassa on komennolle annetut parametrit (/komento jotain, jotain on parametri), $server on luonnollisesti aktiivinen palvelin ja $witem on aktiivisen ikkunan sisältö.
arcatan kirjoitti:
my ($data, $server, $witem) = @_;Tämä siis lukee runille annetut parametrit muuttujiin. $datassa on komennolle annetut parametrit (/komento jotain, jotain on parametri), $server on luonnollisesti aktiivinen palvelin ja $witem on aktiivisen ikkunan sisältö.
Ei se toimi vieläkään. Valittaa nyt tällasta:
thread failed to start: Can't call method "command" on an undefined value at (eval 47) line 32.
arcatan kirjoitti:
Oletan, että tämä run on bindattu johonkin komentoon, tyyliin
Irssi::command_bind('komento', 'run');
.
Itseasiassa yritän suorittaa tota threadistam joka on tällanen:
my $thread = threads->new(sub { while(1){ sleep(5); run(); } });
$server->command("/msg #kanava ".$rivi);
Ainakin aliaksen kanssa jätetään "/" pois eli
$server->command("msg #kanava ".$rivi);
mutta en minä perliä osaa >_>
M2tias kirjoitti:
$server->command("/msg #kanava ".$rivi);
Ainakin aliaksen kanssa jätetään "/" pois eli
$server->command("msg #kanava ".$rivi);
mutta en minä perliä osaa >_>
Ei sitä mircissä ainakaan ole haittaa.
Eikös kyse ollut irssistä eikä mircistä O_o
En usko että siitä sen enempää haittaa irssissäkään ole. Kuhan vertasin vaan, tolla mircillä enemmän scriptejä tullut tehtyä...
arcatan kirjoitti:
Muokkaa kolmatta riviä näin:
my @rivit = <KAHVA>;Joku Perl-osaaja voikin sitten kertoa miksi tuo my tarvitaan tuonne, minä en osaa Perliä.
Perlissä on vipu joka määrittelee täytyykö muuttujat esitellä vai ei.
Aihe on jo aika vanha, joten et voi enää vastata siihen.