Permalänk
Medlem

irssi/perl script hjälp.

Hejsan!
Sitter på irssi och försöker få ett script till att fungera, problemet är att jag inte har den blekaste om hur variabler i Perl funkar och tutorials jag har kollat upp har bara förvirrat mig.
Så det jag försöker göra här nu är att nån skriver '.lastfm >något användarnamn<' i kanalen och då körs ett annat script genom kommandot '/np >användarnamnet<'.
Har testat en massa olika format på vad som borde vara variabler utan framgång. Bytar jag bara ut vad som nu är $1() mot Zweibach så funkar kommandot så uppenbarligen gör jag något fel variablerna.

Tack för er tid.

https://github.com/irssi/scripts.irssi.org/blob/gh-pages/scri...

-publics -nocase -debug -channels '#mshd' -pattern '.lastfm $1()' -command '/np $1()' -name 'LastFM'

Permalänk
Hedersmedlem
Skrivet av Zweibach:

-publics -nocase -debug -channels '#mshd' -pattern '.lastfm $1()' -command '/np $1()' -name 'LastFM'

Efter en snabbtitt i skriptdokumentationen så tolkar jag det som att `-pattern` anger ett "mönster" för ren strängmatchning (med `?` och `*` som globvariabler) utan att kunna fånga och vidarebefordra grupper. Till det erbjuds i stället växeln `-regexp` som tar ett reguljärt uttryck som kan fånga grupper (med paranteser) att skicka vidare till `-command`.

I detta fall så borde `-regexp` (som alltså ska användas i stället för `-pattern`) och `-command` bli något i stil med:

-regexp '^\.lastfm (.*)' -command '/np $1'

  • `^` betyder "början av en rad"

  • `\.` betyder helt enkelt en punkt, men om den inte "escape:as" med backslash så tolkas den som metatecknet `.` som står för "vilket tecken som helst" i regexpsammanhang

  • Paranteser "fångar" en grupp av tecken som sedan lagras i `$1`, `$2`, etc.

  • `.*` använder punkten som metateckner som nämndes ovan, dvs i betydelsen "vilket tecken som helst". Samtidigt läggs modifieraren `*` till som betyder "föregående tecken noll eller flera gånger". Kanske du hellre vill ha `+` här, som betyder "föregående tecken en eller flera gånger" för att inte matcha `.lastfm ` utan argument, men vilket som passar bäst beror på yttre omständigheter.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

Tack så mycket!
Det funkar som det ska nu.
Trodde jag var tvungen att skriva till en variabel och sen läsa den.