[perl] probleme tableau de hachage
die
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour, je code un bot irc en perl, je ne suis pas très fort en table de hachage et la justement j'essaye mais apperemment ca ne marche pas.
Voila mon code :
sub on_public
{
my ($conn, $event) = @_;
my %salut();
my $text = $event->{'args'}[0];
print "<" . $event->{'nick'} . ">\t| $text\n";
if ($text eq 'salut $nick'||'yop $nick'||'slt $nick'||'plop $nick')
{
if($salut{event->{'nick'}} <= 4)
{
sleep(3);
$conn->privmsg($channel, 'Salut '. $event->{'nick'} .' !')
$salut{event->{'nick'}}++;
}
else
{
sleep(5);
$conn->privmsg($channel, 'Euh.... T\'en a pas un peu marre la ?')
}
}
} # Fin on_public
C'est %salut qui plante
et voila ce que me dit la console :
die@laptop:~/Programmation/Perl$ ./test.pl
syntax error at ./remy.pl line 62, near "%salut("
Can't use bareword ("event") as a HASH ref while "strict refs" in use at ./test.pl line 67.
Je ne comprends rien ^^ pouvez vous m'aidez ?
Merci d'avance
Voila mon code :
sub on_public
{
my ($conn, $event) = @_;
my %salut();
my $text = $event->{'args'}[0];
print "<" . $event->{'nick'} . ">\t| $text\n";
if ($text eq 'salut $nick'||'yop $nick'||'slt $nick'||'plop $nick')
{
if($salut{event->{'nick'}} <= 4)
{
sleep(3);
$conn->privmsg($channel, 'Salut '. $event->{'nick'} .' !')
$salut{event->{'nick'}}++;
}
else
{
sleep(5);
$conn->privmsg($channel, 'Euh.... T\'en a pas un peu marre la ?')
}
}
} # Fin on_public
C'est %salut qui plante
et voila ce que me dit la console :
die@laptop:~/Programmation/Perl$ ./test.pl
syntax error at ./remy.pl line 62, near "%salut("
Can't use bareword ("event") as a HASH ref while "strict refs" in use at ./test.pl line 67.
Je ne comprends rien ^^ pouvez vous m'aidez ?
Merci d'avance
A voir également:
- [perl] probleme tableau de hachage
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
7 réponses
Salut,
Ben, je pense que tu dois afficher tout le code pour comprendre.
Sinon, cette expression je pense qu'elle ne sera jamais vraie
$text eq 'salut $nick'
Quand on utilise les apostrophes il n'y a pas d'interpolation des variables ce qui veut dire que $nick sera lu littéralement et je ne sais pas si c'est ça que tu veux.
Si tu veux que $text soit comparé à salut + le contenu de la variable scalaire $nick alors tu dois utiliser les guillements qui perment l'interpolation des varaibles
Ben, je pense que tu dois afficher tout le code pour comprendre.
Sinon, cette expression je pense qu'elle ne sera jamais vraie
$text eq 'salut $nick'
Quand on utilise les apostrophes il n'y a pas d'interpolation des variables ce qui veut dire que $nick sera lu littéralement et je ne sais pas si c'est ça que tu veux.
Si tu veux que $text soit comparé à salut + le contenu de la variable scalaire $nick alors tu dois utiliser les guillements qui perment l'interpolation des varaibles
$text eq "salut $nick"
Salut : voila le code source complet
http://fr.pastebin.ca/1270415
Et tu avait raison, j'avais oublié pour les doubles quotes.
http://fr.pastebin.ca/1270415
Et tu avait raison, j'avais oublié pour les doubles quotes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
my ($conn, $event) = @_;
Pourqoi ?!
Je vois que tu appelles les sous-programmes sans argument.
Je vois que tu crés un objet $conn.
Alors à l'intérieur de sous-programmes, $conn c'est quoi?!
my ($conn, $event) = @_;
Pourqoi ?!
Je vois que tu appelles les sous-programmes sans argument.
Je vois que tu crés un objet $conn.
Alors à l'intérieur de sous-programmes, $conn c'est quoi?!
Salut, $conn et tout sont des objets gérés par une libraire que j'ai téléchargé (NET::IRC), alors ce qu'il y a deddans... je ne sais pas, j'utilise cette doc pour avoir l'utilisation de la librairie : https://www.squalenet.net/fr/pc/articles/ecrire-un-bot-irc-en-perl-part1.php5
Sinon j'ai eu l'idée de remplacer les event->{'nick'} par une scalaire $interlocuteur, ça donne ça:
http://pastebin.com/m499c13b6
Et maintenant il me fait une erreur ici :
if($salut{$interlocuteur} <= 4)
apperement il n'aime pas le "<="
Use of uninitialized value in numeric le (<=) at ./Programmation/Perl/remy.pl line 68.
Sinon j'ai eu l'idée de remplacer les event->{'nick'} par une scalaire $interlocuteur, ça donne ça:
http://pastebin.com/m499c13b6
Et maintenant il me fait une erreur ici :
if($salut{$interlocuteur} <= 4)
apperement il n'aime pas le "<="
Use of uninitialized value in numeric le (<=) at ./Programmation/Perl/remy.pl line 68.