#!/usr/bin/perl -w IRC::register("Brainfuck", "0.1", "", ""); IRC::add_message_handler("PRIVMSG", "bf"); IRC::add_command_handler("bf", "write_bf"); IRC::print("Brainfuck-Interpreter registered"); sub bf{ $in=shift; if($in=~/bf.*bf/i){ $code=$&; $code=~s/bf//gi; &interpret_bf($code); } return 0; } sub write_bf{ IRC::command("bf$_[0]bf"); return 1; } sub interpret_bf { $x = $_[0]; $x=~s/./$&;/g; $x=~s/\+|-/P$&$&/g; $x=~s//\$p++/g; $x=~s/\./mprint chr P/g; $x=~s/,/P=ord getc/g; $x=~y/[]/{}/; $x=~s/{/while(P){/g; $x=~s/P/\$m[\$p]/g; eval$x; IRC::print($string); $string=""; return 1; } sub mprint { $string .= $_[0]; }