use strict;
use warnings;

# Programm ist wieder ein Filter:
while(<>) 
  {
  s/\b(\w+)\b/scrambler($1)/ge;
  print;
  }

sub scrambler 
  {
  if ($_[0] =~ m/\b(\w)(\w+)(.)\b/) 
    {
    my @zeichen = split(//, $2);
    shuffle (\@zeichen);
    return ($1 . join('', @zeichen) . $3);
    }
  else 
    { return $_[0]; }
  }

sub shuffle 
  {
  # geborgt bei O'Reilly, Perl-Kochbuch, fisher-yates-shuffle
  my $array = shift;
  my ($i, $j);
  for ($i = @$array; --$i;) 
    {
    $j = int(rand($i + 1));
    next if($i == $j);
    @$array[$i,$j] = @$array[$j,$i];
    }
  }
