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 :OO
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 :OO
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 :e 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 :D
142 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe