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