Shiny happy people coding

Codons avec le sourire

Mon premier script Perl

| Comments

Eh bien, voila. Cela faisait plusieurs semaines maintenant que je suis en plein apprentissage du perl. Je tente de l’apprendre par moi-meme grace a une methode qui se normalement nous apprend le perl 5 en 21 jours. Personnelement ca fait deja plus de 21 jours que je tente de lire cette methode et j’en suis encore au jour 15. Mais la fin de la methode approche. Le deuxieme avantage pour moi de cette methode est qu’elle est completement rediger en anglais. Donc je suis bien obliger de lire l’anglais.

Mais ceci me sort du sujet qui est mon premier script perl. J’ai quand meme mis 2 jours a le realiser. C’est la que l’on voit que certaine chose prenne beaucoup plus de temps que d’autre. Ce script perl est un script qui s’utilise avec le client irc irssi.
Son but est aussi tres simple.
Sur beaucoup de client irc, il y a la commande /amsg qui existe et qui permet de dire sur plusieurs channel en meme temps la meme phrase. Hors irssi n’a pas implemente cette fonction. Apres discution avec certaine personne sur le channel officiel de Irssi (#irssi sur le server irc.freenode.net), j’ai appris qu’il considere cette fonction comme une sorte de flood. C’est pourquoi je ne leur enverrais donc pas mon mini script.
J’ai donc fait une fonction que j’ai nommer /helloall qui permet d’envoyer sur tous les chans ont la personne est connecter, la meme phrase. La petite amelioration par rapport a /amsg est que ma fonction est multiserver, contrairement a /amsg qui est ce que l’on peux appeler “uniserver”. Mais treve de parole, voici mon petit code :)

#!/usr/bin/perl

use Irssi;
use strict;
use vars qw($VERSION %IRSSI);

$VERSION = '0.10';
%IRSSI = (
authors => 'Cyril Mougel',
contact => 'cyril.mougel [AT] gmail [DOT] com',
name => 'helloall',
description => 'it\'s useless',
license => 'GPL',
);


sub cmd_helloall {
# message : param for the message to send all chan

my ($message) = @_;

foreach my $server (Irssi::servers()){
Irssi::print(" We were in the server : $server");

foreach my $chan ($server->channels){
Irssi::print("Message send to $chan->{name}, with $message");
$server->command("msg ".$chan->{name}." $message");
}
}
}

Irssi::command_bind('helloall', 'cmd_helloall');