#! perl use Storable qw/nfreeze thaw/; my %global; # for use by eval'ed commands cf::register_extcmd perl_eval => sub { my ($pl, $data) = @_; my ($token, $data) = split / /, $data, 2; unless ($pl->ob->flag (cf::FLAG_WIZ)) { $pl->send ("ext $token error permission denied"); return; } my ($code, $arg) = split /\0/, $data, 2; $arg = eval { thaw $arg }; my @res = eval $code; $@ ? $pl->send ("ext $token error $@") : $pl->send ("ext $token ok " . nfreeze \@res); };