Skip to content

Instantly share code, notes, and snippets.

@gumayunov
Created September 28, 2011 10:43
Show Gist options
  • Save gumayunov/1247624 to your computer and use it in GitHub Desktop.
Save gumayunov/1247624 to your computer and use it in GitHub Desktop.
sub censor
{
my ($msg, $stopwords_regex) = @_;
my $letters = { map { $_ => 1 } ( 'a' .. 'z', 'A' .. 'Z', '0' .. '9', '@' ) };
$msg =~ s/ / /og;
my $i = 0;
my $numerated_letters = [ grep { $letters->{$_->[1]} } map { [ $i++ , $_ ] } split //, $msg_cp ];
my $deobfuscated_msg = join( '', map { $_->[1] } @$numerated_letters );
while( $deobfuscated_msg =~ /$stopwords_regex/g ) {
push @intervals, [ $-[0], $+[0] ];
}
my @real_intervals = map { [ $numerated_letters->[$_->[0]]->[0], $numerated_letters->[$_->[1] - 1 ]->[0] + 1 ] } @intervals;
my $shift = 0;
my $cr_length = length $censor_replacement;
for( @real_intervals ) {
substr( $msg, $_->[0] + $shift, $_->[1] - $_->[0], $censor_replacement );
$shift += $cr_length - ($_->[1] - $_->[0]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment