linux-l: Perl
Ulrich Wiederhold
U.Wiederhold at gmx.net
Do Jul 13 09:54:35 CEST 2000
Hallo,
habe ein Problem mit einem xchat script in Perl. Konnte bisher nirgends
eine Lösung finden!
************************************************
@channels = ('#musirc','#drinks&music','#mp3^s');
sub privmsg_handler()
{
my $line = shift(@_); #get the argument
$line =~ /:([^!]*)![^@]*@[^ ]* [^ ]*[\s]([^:]*):(.*)/;
$nick = $1; #who has send the message.
my $current_channel = $2;
my $message = $3; #what was the message
#bis hierher funktioniert es.
#habe folgendes probiert:
1. if (join(',', at channels) =~ /$current_channel/ && $message eq $triglist)
#funktioniert nicht
oder
2. if(grep(/$current_channel/, @channels) && $message eq $triglist)
#funktioniert nicht
oder
3. if ("@channels" =~ /$current_channel/ && $message eq $triglist)
{
IRC::print("Yuhuu!");
}
Der zweite Teil der if-Abfrage funktioniert, das ist definitiv nicht das Problem!
Das Problem ist, daß bei der bisher funktionierenden Version die
if-Anweisung immer nur dann durchlaufen wird, wenn $triglist in
$channels[0] eingetippt wird. Channel mit einem größeren Index werden
ignoriert. Wenn ich die Reihenfolge der Channel in @channels verändere,
bleibt das Problem. Wenn ich anstelle der Variable in der if-Anweisung
den channelnamen eingebe funktioniert es mit /\#drinks&music/ bzw.
/\#musirc/.
Einfügen von \Q vor $current_channel bringt keine Änderung!
Das Array in einen String einlesen (mit join) brachte kein Ergebnis!
Kann mir da jemand helfen???
Tüftele seit etwa 6 Std an dem Problem (reine Tüftelzeit!).
Danke.
Gruß
Uli
Mehr Informationen über die Mailingliste linux-l