1use strict; 2use vars qw($VERSION %IRSSI); 3 4use Irssi qw(command_bind active_win); 5$VERSION = '1.10'; 6%IRSSI = ( 7 authors => 'Juerd', 8 contact => 'juerd@juerd.nl', 9 name => 'Calculator', 10 description => 'Simple /calc mechanism', 11 license => 'Public Domain', 12 url => 'http://juerd.nl/irssi/', 13 changed => 'Thu Mar 19 11:00 CET 2002', 14); 15 16command_bind( 17 calc => sub { 18 my ($msg) = @_; 19 for ($msg) { 20 s/,/./g; 21 s/[^*.+0-9&|)(x\/^-]//g; 22 s/\*\*/^/g; 23 s/([*+\\.\/x-])\1*/$1/g; 24 s/\^/**/g; 25 s/(?<!0)x//g; 26 } 27 my $answer = eval("($msg) || 0"); 28 active_win->print($@ ? "$msg = ERROR (${\ (split / at/, $@, 2)[0]})" : "$msg = $answer"); 29 } 30); 31