The following is preliminary documentation for various Perl modules useful for build CCR xprocs. This code only works with Perl v5. ApplyTable.pm Generic perl module for a "table" - a mapping between regexps and functions to call when something matches that regexp. Tables are used to drive robot behavior. CCRBot.pm Functionality to generic CCR robots. Support is here for ccrl parsing, initialization of I/O channels, and debugging code. TalkBot.pm Subclass of CCRBot - allows easy creation of robots that respond to textual input. Uses tables to configure responses. hellobot.pl Simple demonstration, a particular kind of TalkBot. UDPBot.pm Subclass of TalkBot: support for UDP communication and aliases for Object IDs to send UDP messages to. Also implements the BaseUDP protocol, which currently contains support for ping/pong. udpradio.pl Implementation of a UDPBot, allows communication-at-a-distance with other UDPradios. Somewhat nontrivial example. README.radio Documentation for creating and using a radio. There are two goals for these modules. One is to provide basic support for common xproc needs - debugging support, answering text messages, etc. The other is to make a foundation for standard behaviour, so that xprocs conform to some conventions. The main convention represented in the code so far is the BaseUDP ping/pong protocol. The structure of the code is semi-object oriented. It is OO in the sense that each .pm file represents a class, a particular type of CCR robot. It is also OO in the sense that some classes inherit behavior from previous classes. The code uses the Perl5 module hacks to emulate method inheritance. On the other hand, the code is not OO because object data is not stored in an object: instead, data is stored in global variables. Essentially, this means you can only create one instance of any of these classes in a running program: fortunately, that's all you need for a typical xproc. Using global variables was a big convenience for writing code. The basic plan is to write a .pl file to be your xproc, that uses one of the .pm modules above to provide standard functionality. Other than initRobot(), most of the convenience comes from TalkBot and UDPBot - instead of reading from stdin directly, your Perl script should call doInput(), a function defined in the .pm flie. doInput() will handle some kinds of energy itself (TalkBot will feed Emits through a table, UDPBot catches the ping/pong protocol), and will pass along anything it doesn't know what to do with along to your own code to handle. hellobot.pl is a simple example of using TalkBot, udpradio.pl is a nontrivial xproc that uses UDPBot.