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
|
#!/usr/bin/perl
$row = "!qwertyuiop!asdfghjkl!zxcvbnm!";
@row_array = split(//, $row);
while (<>) {
chomp;
y/A-Z/a-z/;
s/\byou\b/u/gi;
s/\bpeople\b/ppl/gi;
s/\bthrough\b/thru/gi;
s/\bthough\b/tho/gi;
s/\bnope\b/nup/gi;
s/\baustralia\b/oz/gi;
s/\bfilm\b/flim/gi;
s/\bsucks\b/sux/gi;
s/\benough\b/enuff/gi;
s/\ba lot\b/a shitload/gi;
s/\bstuff\b/shit/gi;
s/, /.. /g;
s/\.$/.../g;
@lets = split(//);
$strlen = $#lets;
for ($x = 0; $x < $strlen; $x++) {
if (rand() < 0.01) {
swap(\@lets, $x, $x + 1);
next;
}
if (rand() < 0.10 && $lets[$x] eq " ") {
swap(\@lets, $x - 1, $x - 2);
next;
}
if(rand() < 0.01) {
$i = insert_adjacent(\@lets, $x, $lets[$x]);
$strlen += $i;
next;
}
if(rand() < 0.01) {
splice(@lets, $x, 1);
$strlen--;
next;
}
}
print join("", @lets) . "\n";
}
sub insert_adjacent {
my($aref, $pos, $let) = @_;
$newlet = get_adjacent($let);
if( !$newlet ) {
return 0;
}
splice(@$aref, $pos + 1, 0, $newlet);
return 1;
}
sub get_adjacent {
my($let) = @_;
return 0 if $let !~ /[a-zA-Z]/;
$i = index($row, $let);
$before = $row_array[$i - 1];
$after = $row_array[$i + 1];
if( $before eq "!" || (rand() < rand() && $after ne "!")) {
return $after;
} else {
return $before;
}
}
sub swap {
my($aref, $n, $m) = @_;
my($tmp);
if(defined($$aref[$n]) && defined($$aref[$m])) {
if(! (($$aref[$n] =~ /[A-Z ]/ && $$aref[$m] =~ /[A-Z ]/) ||
($$aref[$n] =~ /[a-z ]/ && $$aref[$m] =~ /[a-z ]/) )) {
return;
}
$tmp = $$aref[$n];
$$aref[$n] = $$aref[$m];
$$aref[$m] = $tmp;
}
}
|