1. Aufruf der Subroutine und ausgabe des Wertes
# Aufruf der Subroutine mit Parametern
$randomid = &pw_gen("8","3","1");
# Ausgabe der erzeugten ID
print "$randomid";
Hier wird die Subroutine mitden gewünschten Parametern aufgerufen. Lässt man die Parameter alle oder Teile davon weg liefert die Subroutine die voreingestellten Standardwerte.
2. Die Subroutine und deren Funktionen
Zu Beginn der Routine, sozusagen als "Gedächtnisstütze", eine Mini Bedienungsanleitung.
# Benutzung:
# $randomid = &pw("8", "3", "0");
# 8 = Laenge der zu generierenden ID
# Parameter 1, 2 oder 3
# 1 = ID nur aus Buchstaben
# 2 = ID nur aus Zahlen
# 3 = ID aus Zahlen und Buchstaben
# 3. Parameter 0 oder 1
# ID crypten Nein - JA
Hier nun übernimmt die Subroutine die ihr übergebenen Parameter
my ($length,$mix,$crypt_jn) = @_;
Im jetzt folgenden Block werden die Standardparameter zugewiesen für den Fall das keine, oder nur Teile der Parameter angegeben wurden.
Der Befehl unless bedeutet hier: "wenn nicht, wenn kein". Also: Wenn kein Parameter für die Länge $length angegeben wurde, setze Länge auf 8 Zeichen.
# Wenn Parameter Länge nicht angegeben, 8 als Standardwert setzen
unless ($length) {
$length = 8;
}
Hier wird mittels "oder", bezeichnet durch || abgefragt ob für die zu verwendende Zeichengruppen ein Parameter vorhanden ist.
Also ist kein Parameter 1 oder 2 oder 3 vorhanden nimm 3 als Standard.
# Wenn kein Parameter der zu verwendenden Zeichengruppe
# angegeben wurde, 3 als Standardwert setzen
unless (($mix == 1 || $mix == 2 || $mix == 3)) {
$mix = 3;
}
# Wenn kein Parameter für Crypt angegeben
# ID nicht crypten
unless ($crypt_jn) {
$crypt_jn = 0;
}
3. Die Unterabschnitte der Subroutine
In den nun folgenden Unterabschnitten, getrennt durch if - elsif, werden die übergebenen Parameter "angewendet".
if ($mix == 1) {
@Zeichen = qw(A B C D E F G H J K L M N P Q R S T U V W Y Z
a b c d e f g h j k m n p q r s t u v w y z);
foreach (0..$length-1) {
$zufall = rand(@Zeichen);
push(@za, $Zeichen[$zufall]);
}
$passwort = join("",@za);
Das Array @Zeichen enthält die zur Generierung nötigen Zeichen. Das qw erspart hierbei
das man die Zeichen mittels "A","B", usw. notieren muss.
In der nun folgenden foreach Schleife wird soviele male ein Zufallszeichen per rand aus dem Array
@Zeichen ermittelt wie die angegebene Länge $length beträgt. Das -1 deshalb um die Anzahl zu berichtigen.
Denn 0 - 8 ergäbe 9 Zeichen.
Nun werden die erzeugten Zufallszeichen mittels push in das Array @za gepusht.
Am Schluss wird dann per join das Array @za der Variable $passwort zugewiesen.
Join bedeutet soviel wie zusammenfügen.
4. Die erzeugte Zeichenkette verschlüsseln?
# ID crypten?
if ($crypt_jn == 1) {
$salt = "dx";
$passwort = crypt($passwort, $salt);
}
Am Schluss der Subroutine wird nun, je nach Parameter, entschieden ob verschlüsselt wird oder nicht.
Das "Salz" $salt = "dx"; ist dabei eine frei wählbahre 2 stellige Zeichenkombination.
Mittels $passwort = crypt($passwort, $salt); wird dann die Zeichenkette verschlüsselt wenn der Parameter dafür angegeben wurde.
Am Subroutinenende wird dann per return der Wert $passwort zurückgegeben.
return $passwort;
|