Test::Sims is a Perl module to support the Sims testing technique to generate
large, complex, interesting, semi-random yet valid data for testing purposes.

Here's the slides outlining the technique:
http://schwern.org/talks/Generating%20Test%20Data%20With%20The%20Sims.pdf

Install as any normal Module::Build Perl module.

   perl Build.PL
   ./Build
   ./Build test
   sudo ./Build install

Or for your own personal use:

   perl Build.PL --install_base ~
   ./Build
   ./Build test
   ./Build install

Here's an example of making a simple package to generate random dates.

   package Sim::Date;

   use strict;
   use warnings;

   use DateTime;
   use Test::Sims;

   # Create rand_year(), rand_month(), etc...
   # All exportable on demand or with the :rand tag
   make_rand year  => [1800..2100];
   make_rand month => [1..12];
   make_rand day   => [1..31];
   make_rand hour  => [0..23];
   make_rand minute=> [0..59];
   make_rand second=> [0..59];

   sub sim_datetime {
       my %defaults = (
           year   => rand_year(),
           month  => rand_month(),
           day    => rand_day(),
           hour   => rand_hour(),
           minute => rand_minute(),
           second => rand_second(),
       );

       return DateTime->new(
           %defaults, @_
       );
   }

   # Export sim_datetime()
   export_sims();

And then using it.

   use Sim::Date;

   # Random date.
   my $date = sim_datetime;

   # Random date in the year 2009
   my $date = sim_datetime(
       year => 2009
   );