Acme-Laugh
view release on metacpan or search on metacpan
lib/Acme/Laugh.pm view on Meta::CPAN
our @ISA = qw( Exporter );
our %EXPORT_TAGS = ('all' => [qw( laugh )]);
our @EXPORT_OK = (@{$EXPORT_TAGS{'all'}});
our @EXPORT = qw();
# Module implementation here
my @incipit = ('', qw( m b mb ));
my @alto = qw( w u );
my @basso = qw( a e );
=encoding iso-8859-1
=begin Private
=over
=item incipit()
Returns the incipit of the laugh. No parameters.
=item minichunk( $first );
Returns a chunk of a laugh. It is compound of one to three letters.
The input parameter forces the inclusion of the first letter, for reasons
too difficult to explain here.
=item continuum( $chunks );
Returns the join of a $chunks number of elements, where $chunks defaults
to 1 + rand 4;
=item capitals( $laugh );
Returns the input $laugh where some of the letters are capitalised in
a random fashion.
=back
=end Private
=cut
sub incipit { return $incipit[rand @incipit]; }
sub minichunk {
my ($dopre) = @_;
my $pre = $alto[rand @alto];
$pre = '' if (!$dopre) && (rand > 0.5);
my $post = (rand > 0.5) ? 'h' : '';
my $chunk = join '', $pre, $basso[rand @basso], $post;
return ($chunk, $post);
} ## end sub minichunk
sub continuum {
my $chunks = shift || 0;
$chunks = 1 + rand 4 if $chunks < 1;
my $p = 0;
return join '',
map { (my $c, $p) = minichunk(!$p); $c; } 1 .. $chunks;
} ## end sub continuum
sub capitals {
return join '', map { rand > 0.5 ? uc($_) : $_; } split //, shift;
}
sub laugh { return capitals(join '', incipit(), continuum(shift)); }
1; # Magic true value required at end of module
__END__
=head1 NAME
Acme::Laugh - add joy to your scripts.
=head1 VERSION
This document describes Acme::Laugh version 0.0.1
=head1 SYNOPSIS
use Acme::Laugh qw( laugh );
print laugh(5); # print a short laugh
print laugh(50); # print a long laugh
=head1 DESCRIPTION
=for l'autore, da riempire:
Fornite una descrizione completa del modulo e delle sue caratteristiche.
Aiutatevi a strutturare il testo con le sottosezioni (=head2, =head3)
se necessario.
Laughing is something that lets humans distinguish themselves from other
forms of life. Now computers are nearer to us :)
Have you ever needed to generate a laugh? I had: in IRC, to laugh at
other people (for fun!). So, here we are!
=head1 INTERFACE
This module lets you export the C<laugh> function:
=over
=item my $l = laugh( $length );
=item my $l = laugh(); # Random length
This function accepts an optional $length parameter, which lets you trim
the length of the generated laugh. This length has little to do with the
actual string length (which you can trim later, if you want), but higher
values generate longer laughs in average. Ok, peruse the code to see it!
=back
=head1 DEPENDENCIES
=for l'autore, da riempire:
Una lista di tutti gli altri moduli su cui si basa questo modulo,
( run in 1.579 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )