Vi som sitter och leker i #webforum har just skaffat oss lite stats (igen). Nu kör vi med Pisg som är ett perl-baserat script för att läsa loggfiler och generera statistik. En del i statistiken är hur ofta smileys används i kanalen, men alla smileys som vi använder känns inte igen och jag blir inte klok på hur jag fixar detta.
# Who smiles the most?
my $e = '[8;:=%]'; # eyes
my $n = '[-oc*^]'; # nose
# smileys including asian-style (^^ ^_^' ^^; \o/)
if ($saying =~ /(>?$e'?$n[\)pPD\}\]>]|[\(\{\[<]$n'?$e<?|[;:]\)|\([;:]|\^[_o-]*\^[';]|\\[o.]\/)/o) {
$stats->{smiles}{$nick}++;
$stats->{smileys}{$1}++;
$stats->{smileynicks}{$1} = $nick;
}
# asian frown: ;_;
if ($saying =~ /($e'?$n[\(\[\\\/\{|]|[\)\]\\\/\}|]$n'?$e|[;:]\(|\):|;_+;|T_+T|-[._]+-)/o and
$saying !~ /\w+:\/\//o) {
$stats->{frowns}{$nick}++;
$stats->{smileys}{$1}++;
$stats->{smileynicks}{$1} = $nick;
}
Smileys som vi bl.a vill ska kännas igen:
:o :O :OO :e :p :P §e :D
Hur får jag till detta?
/red Försökte få bara text för smileys inom kodtaggen men funka inget vidare.
my $e = '[§8;:=%]';
my $n = '[-oc*^]';
if ($saying =~ /(>?$e'?$n?([\)opPD\}\]>]|O{2})|[\(\{\[<]$n?'?$e<?|[;:]\)|\([;:]|\^[_o-]*\^[';]|\\[o.]\/)/o) {
$stats->{smiles}{$nick}++;
$stats->{smileys}{$2}++;
$stats->{smileynicks}{$2} = $nick;
}
Detta ska acceptera smilies från till >§'*OO, jag förutser att den senare kommer bli en stor framgång pga sitt kompakta format och lätt ihågkommna teckensekvens
my $e = '[§8;:=%]';
my $n = '[-oc*^]';
if ($saying =~ /(>?$e'?$n?([\)opPD\}\]>]|O{2})|[\(\{\[<]$n?'?$e<?|[;:]\)|\([;:]|\^[_o-]*\^[';]|\\[o.]\/)/o) {
$stats->{smiles}{$nick}++;
$stats->{smileys}{$2}++;
$stats->{smileynicks}{$2} = $nick;
}
Detta ska acceptera smilies från till >§'*OO, jag förutser att den senare kommer bli en stor framgång pga sitt kompakta format och lätt ihågkommna teckensekvens
Det där funka inget vidare. Den enda han klara av att känna igen nu var dvs det blev sämre än innan.
C:\Program Files\pisg>perl pisg
pisg v0.66 - Perl IRC Statistics Generator
Using config file: pisg.cfg
Statistics for channel #webforum @ DALnet by FarbrorBarbro
Using language template: SE
String found where operator expected at modules//Pisg/Parser/Logfile.pm line 409
, near "$e'?$n[\(\[\\\/\{|]|[\)\]\\\/\}|]$n'"
(Missing operator before '?$n[\(\[\\\/\{|]|[\)\]\\\/\}|]$n'?)
Backslash found where operator expected at modules//Pisg/Parser/Logfile.pm line
409, near "]\"
(Missing operator before \?)
Could not load stats analyzer for 'Logfile': syntax error at modules//Pisg/Parse
r/Logfile.pm line 409, near "if ($saying =~ /("
(Might be a runaway multi-line // string starting on line 402)
syntax error at modules//Pisg/Parser/Logfile.pm line 409, near "+;"
syntax error at modules//Pisg/Parser/Logfile.pm line 453, near "elsif"
Compilation failed in require at (eval 8) line 1.
BEGIN failed--compilation aborted at (eval 8) line 1.
Det är möjligt att ':ar tolkas på något sätt som inte görs i min editor (ConTEXT). Ska det finnas några ' i smilies? Om det ska det, pröva att ersätta ' med \'
Det är möjligt att ':ar tolkas på något sätt som inte görs i min editor (ConTEXT). Ska det finnas några ' i smilies? Om det ska det, pröva att ersätta ' med \'
Inte nödvändigtvis. Men alltså den kod ja skrev i första inlägget funkar som den ska med . Låt säga att jag bara vill lägga till de tycker man ju inte borde vara några problem?
Första koden borde inte funka med smilies utan näsor tycker jag... Jag missar nåt här, jag återkommer i morgon med något mer vaket sinne Att lägga till kolon-e om det funkar ska dock bara vara att lägga till e i denna [\)pPD\}\].
Nu laddade jag ner perl för att prova, och allt utom §-varianterna fungerar (fixade de skumma japanska, ex.vis ^_^ funkade inte med orginalet) Att § inte vill kännas igen förstår jag inte, men det verkar vara något perl-specifikt.
my $e = '[8§;:=%]'; # eyes
my $n = '[-oc*^]'; # nose
# smileys including asian-style (^^ ^_^' ^^; \o/)
if ($saying =~ /(>?$e'?$n?(O{2}|[\)eoOpPD\}\]>])|[\(\{\[<]$n?'?$e<?|\^[_o-]*\^[';]?|\\[o.]\/)/o) {
$stats->{smiles}{$nick}++;
$stats->{smileys}{$1}++;
$stats->{smileynicks}{$1} = $nick;
}
Ovanstående funkar för mig på senaste perlversionen, 5.8.7.
Nu laddade jag ner perl för att prova, och allt utom §-varianterna fungerar (fixade de skumma japanska, ex.vis ^_^ funkade inte med orginalet) Att § inte vill kännas igen förstår jag inte, men det verkar vara något perl-specifikt.
my $e = '[8§;:=%]'; # eyes
my $n = '[-oc*^]'; # nose
# smileys including asian-style (^^ ^_^' ^^; \o/)
if ($saying =~ /(>?$e'?$n?(O{2}|[\)eoOpPD\}\]>])|[\(\{\[<]$n?'?$e<?|\^[_o-]*\^[';]?|\\[o.]\/)/o) {
$stats->{smiles}{$nick}++;
$stats->{smileys}{$1}++;
$stats->{smileynicks}{$1} = $nick;
}
Ovanstående funkar för mig på senaste perlversionen, 5.8.7.
Underbart, funkar kalas! Tackar
288 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a