Texte entstellen durch das Verschieben von Buchstaben
Inhalt:
Aufgabe
Merkwürdige Emails erzeugen, wie z.B.:
Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät, ist es nchit witihcg in
wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige was
wcthiig ist, ist daß der estre und der leztte Bstabchue an der ritihcegn
Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien, tedztorm knan
man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht jeedn Bstachuebn
enzelin leesn, snderon das Wrot als gseatems.
Aufruf mit Parametern
Als Parameter die zu verarbeitende Textdatei angeben.
Skript
#!/usr/bin/perl
use strict;
use warnings;
while(<>) {
s/\b(\w+)\b/&wortspiel($1)/ge;
print;
}
sub wortspiel {
if ($_[0] =~ m/\b(\w)(\w+)(.)\b/) {
my @letters = split(//, $2);
shuffle (\@letters);
return $1.join ('', @letters).$3;
}
else {
return $_[0];
}
}
sub shuffle {
# vgl. O'Reilly, Perl-Kochbuch dt., 1. Auflage, 4.17, fisher-yates-shuffle
my $array = shift;
my $i;
for ($i = @$array; --$i; ) {
my $j = int rand ( $i+1 );
next if $i == $j;
@$array[$i, $j] = @$array[$j, $i];
}
}
Ergänzungen, Kommentare
Wenn man noch ein
use locale; oben einfügt, werden bei deutscher Locale auch Umlaute mit verwürfelt.
--
HaraldBongartz - 08 Nov 2003
Als witzige Form der Steganographie kann man in den verwürfelten Wortmitten auch Information kodieren, je nach dem in welcher sinnlosen Reihenfolge die Buchstaben stehen. Siehe auch
mein rhabarber Generator
--
ThomasChust - 10 Okt 2005