Coy
view release on metacpan or search on metacpan
package Coy;
BEGIN
{
require Exporter;
@ISA = ('Exporter');
@EXPORT = qw(transcend enlighten);
$VERSION = '0.06';
my $USER_CONFIG_FILE = "$ENV{HOME}/.coyrc";
use Carp ();
sub transcend { &Carp::croak }
sub enlighten { &Carp::carp }
# THE REAL WORK STARTS HERE
use Lingua::EN::Inflect qw(PL_N PL_V NO inflect NUM A PART_PRES NUMWORDS);
use Lingua::EN::Hyphenate;
sub random
{
for (1..100)
{
my $choice = $_[int rand @_];
my $selection = (ref($choice) eq 'CODE')
? $choice->()
: $choice;
return $selection if defined $selection;
}
die "couldn't randomize: " . join(", ", @_) . "at " . (caller)[2];
}
sub syl_count
{
my $count = 0;
my $word;
foreach $word (split / /, $_[0])
{
$word =~ /^\d+$/ and $word = NUMWORDS($word);
my @syllables = syllables($word);
$count += @syllables;
}
return $count;
}
# Personages
@Coy::personage = ( "The Jade Emperor", "Master Po", "Mumon",
"The Seventh Sage", "the Master", "Alan Watts",
"Tor Kin Tun", "Tom See", "Or Wunt",
"Homer Simpson", "Lao Tse", "The Buddha",
"Gautama", "Swordmaster Mushashi", "Con Wei",
"Joshu", "Bankei", "Ryokan", "Ryonen", "Eshun",
);
# EXCLAMATIONS
my @exclamation = ( 'Oh!', 'See!', ' Look!' );
# LOCATIONS
my @aquatic = qw( pond river pool dam stream lake );
sub Aquatic::atRandom
{ random
"in the " . random(@aquatic),
"in " . A(random @aquatic)
;
}
sub Exoaquatic::atRandom
{ random
"out of the " . random(@aquatic),
"from " . A(random @aquatic)
;
}
sub Suraquatic::atRandom
{ random
"on the " . random(@aquatic),
"on " . A(random @aquatic)
;
}
sub Aerial::atRandom
{ random
"over the " . random(@aquatic),
"above the " . random(@aquatic),
( run in 5.472 seconds using v1.01-cache-2.11-cpan-364913b4093 )