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