/
hardlycrypt.pm
45 lines (40 loc) · 1.03 KB
/
hardlycrypt.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
#------------------------------------------------------------------------
# Rot13 command
#
# ROT13s a random bit of text.
#
# $Id: rot13.pm,v 1.7 2001/12/13 18:30:51 awh Exp $
#------------------------------------------------------------------------
use strict;
package hardlycrypt;
use List::Util qw/shuffle/;
sub scan(&$$) {
my ($callback,$message,$who) = @_;
if ($message =~ /^rot13\s+(.*)/i) {
# rot13 it
my $reply = hardlycrypt($1);
$callback->($reply);
return "NOREPLY";
}
undef;
}
sub hardlycrypt {
my $phrase = shift;
my @words = split /\b/, $phrase;
my $reply;
foreach (@words) {
my @word = split //, $_;
if ( scalar(@word <= 2) ) {
$reply .= join '', @word;
}
else {
$DB::single=1;
my $front = $word[0];
my $end = $word[$#word];
my $mid = join '', shuffle(@word[1 .. ($#word-1)]);
$reply = $reply . $front . $mid . $end ;
}
}
return $reply;
}
"hardlycrypt";