# #=============================================================================== # # FILE: verwuerfeln.pm # # DESCRIPTION: # # FILES: --- # BUGS: --- # NOTES: --- # AUTHOR: Stefan Suhren (su), suhren.stefan@fh-swf.de # ORGANIZATION: FH Südwestfalen, Iserlohn # VERSION: 1.0 # CREATED: 19.11.2015 15:41:56 # REVISION: --- #=============================================================================== package wordGame; use strict; use warnings; use utf8; # use common import function use Exporter; # enforce utf-8 mode binmode (STDIN, ":encoding(UTF-8)"); binmode (STDOUT, ":encoding(UTF-8)"); binmode (STDERR, ":encoding(UTF-8)"); use open ":encoding(UTF-8)"; # add exporter as a parent for this package. our @ISA= qw( Exporter ); # these CAN be exported. our @EXPORT_OK = qw( verwuerfeln ); # these are exported by default. our @EXPORT = qw( verwuerfeln ); #=== FUNCTION ================================================================ # NAME: verwuerfeln # PURPOSE: # PARAMETERS: zeichenkette: The string to shuffle. # vertauschung: The amount of shuffles to do. # RETURNS: The shuffled string as array. # DESCRIPTION: Shuffles a string. # THROWS: no exceptions # COMMENTS: none # SEE ALSO: n/a #=============================================================================== sub verwuerfeln { my ($zeichenkette, $vertauschung) = @_; #Parameter übernehmen defined $zeichenkette or die "No string for shuffling defined."; defined $vertauschung or die "No shuffling amount defined."; my @ergebnis = split //, uc $zeichenkette; my $laenge = int @ergebnis; # Anzahl der Buchstaben for (my $i = 0; $i < $vertauschung; $i++) { my $index1 = int rand $laenge; # 1. Index my $index2 = int rand $laenge; # 2. Index while ($index1 == $index2) { $index2 = int rand $laenge; } @ergebnis[$index1, $index2] = @ergebnis[$index2, $index1]; } return @ergebnis; } ## --- end sub verwuerfeln