File Coverage

blib/lib/Sex.pm
Criterion Covered Total %
statement 6 32 18.7
branch 0 8 0.0
condition n/a
subroutine 2 3 66.6
pod n/a
total 8 43 18.6


line stmt bran cond sub pod time code
1             package Sex;
2              
3 1     1   984 use strict qw(vars subs);
  1         2  
  1         37  
4              
5 1     1   6 use vars qw($VERSION);
  1         1  
  1         449  
6             $VERSION = '0.69';
7              
8             my @Grunts = ('Does it get bigger?',
9             'I thought eight inches was longer than that.',
10             'Baseball...',
11             "Let's talk about our relationship.",
12             'Wrong hole, dear.',
13             qw(Yes!
14             Oh!
15             Harder!
16             YEAH!
17             YES!
18             OOOooooh...
19             Baby.
20             MORE!
21             Mmmmmm...
22             There!
23             )
24             );
25              
26             sub import {
27 0     0     local $| = 1;
28              
29 0           my($class) = shift;
30 0           my($caller) = caller;
31              
32 0 0         if( !@_ ) {
    0          
    0          
33 0           die "It takes two to tango, babe.\n";
34             }
35             elsif( @_ == 1 ) {
36 0 0         if( $_[0] eq $caller ) {
37 0           die <
38             masturbation
39             n : manual stimulation of the genital organs (of yourself or
40             another) for sexual pleasure [syn: {onanism}, {self-abuse}]
41             MASTURBATION
42              
43             }
44             else {
45 0           die "Parthenogenesis isn't currently supported by ".
46             __PACKAGE__ . "\n";
47             }
48             }
49             elsif( @_ > 2 ) {
50 0           warn "More than two sex partners? ".
51             "Kinky (and illegal in many states).\n";
52             }
53              
54              
55 0           my %zygote = ();
56 0           my $call_sym_table = \%{$caller.'::'};
  0            
57 0           foreach my $gamete (@_) {
58 0           eval "require $gamete";
59 0           while( my($chromo, $rna) = each %{$gamete.'::'} ) {
  0            
60 0           push @{$zygote{$chromo}}, $rna;
  0            
61             }
62             }
63              
64              
65 0           while( my($chromo, $rna) = each %zygote ) {
66 0           $call_sym_table->{$chromo} = $rna->[rand @$rna];
67 0           print $Grunts[rand @Grunts], ' ';
68 0           select(undef, undef, undef, 0.45);
69             }
70              
71 0           push @{$caller.'::ISA'}, @_;
  0            
72              
73 0           print "\n";
74              
75 0           return 'Harry Balls who?';
76             }
77              
78              
79             =pod
80              
81             =head1 NAME
82              
83             Sex - Perl teaches the birds and the bees.
84              
85             =head1 SYNOPSIS
86              
87             package Catholicism;
88             use Sex qw(strict Religion);
89              
90             package Mormonism;
91             use Sex qw(Catholicism Sex);
92              
93              
94             =head1 DESCRIPTION
95              
96             Heterogeneous recombination of Perl packages.
97              
98             Given two (or more, I'm a liberal guy) packages, Sex.pm will recombine
99             their symbols at random recombining them into the new module thus
100             providing a cross-section of its functions and global variables.
101             It will also push the parent classes onto the child's @ISA array.
102              
103             So you could do:
104              
105             package Net::SFTP;
106             use Sex qw(Net::FTP Net::SSLeay);
107              
108             And get a secure FTP client!
109              
110             The recombination occurs in such a way to ensure that the child will
111             contain -all- the symbols of both parents. Should two (or more)
112             parents wish to bestow the same symbol on its child one will be chosen
113             at random.
114              
115             For example:
116              
117             package DejaNews;
118             use Sex qw(LWP::Simple Net::NNTP);
119              
120             LWP::Simple and Net::NNTP both have a head() function and thus they
121             try to give head() to their child. Sex.pm will suck the head() off
122             either LWP::Simple or Net::NNTP and stick it to DejaNews. Afterwards,
123             DejaNews can procede to finally use its head().
124              
125             Here's another timely example for Sex in the 21st century:
126              
127             package URI::Bot9000;
128             use Sex qw(URI LWP::RobotUA protected);
129              
130             Because of the dire consequences of having sex with URI, one should
131             make sure you're well protected.
132              
133              
134             =head1 BUGS
135              
136             There are many bugs you can get from having Sex used too often on your
137             computer. Please be sure your programs are Safe before they have Sex.
138              
139             package Trojan;
140             use Sex qw(Safe Sex);
141              
142              
143             =head1 AUTHOR
144              
145             Michael 'The Porn King of CMU' Schwern
146              
147              
148             =head1 SEE ALSO
149              
150             'Disco Dolls in Hot Skin'
151              
152             'Exhausted: The John Holmes Story'
153              
154             'Deep Recursion' starring Ada Lovelace.
155              
156             'The Fly' (1953)
157              
158              
159             =cut
160              
161              
162             return 'Harry balls anyone he wants!';