The Benchmark::Timer class allows you to time portions of code conveniently, as well as benchmark code by allowing timings of repeated trials. It is perfect for when you need more precise information about the running time of portions of your code than the Benchmark module will give you, but don't want to go all out and profile your code.
FileHandle::Unget is a Perl module which is a drop-in replacement for FileHandle. It allows more than one byte to be placed back on the input. It supports an ungetc(ORD) which can be called more than once in a row, and an ungets(SCALAR) which places a string of bytes back on the input.
yagg, given YACC-like and LEX-like input files, generates a C++ program that generates all strings of a user-specified length. This program can then be used to generate inputs for testing, or to validate that a grammar accepts the strings that you think it does. The grammar file provides the grammar productions for string generation, along with optional action blocks that can perform context-sensitive checks in order to limit the generated strings. The LEX-like terminal generator file provides specifications that instruct the program how to generate strings for terminals in the grammar.