Hallo alle zusammen,
Hallo
ich mache derzeit einen Fernlehrkurs, in dem momentan PERL behandelt wird. Leider erreiche ich auf die Schnelle niemanden, hätte aber dennoch eine (vermutliche Anfänger-) Frage:
OK
Ich soll für eine Aufgabe eine einfache User-Kennwort-Abfrage zum Ausführen über die Command / Shell mittels PERL erstellen. Dazu soll ich eine Hash-Variable nutzen, um die User und Passwörter zu hinterlegen. Ich hab jetzt glaub zwei Tage gegoogle't, wurde aber nicht wirklich fündig (mein Lehrheft hilft mir da auch nicht wirklich weiter ...) und auch das 'Try-and-Fail' wird langsam langweilig. Zu meiner eigentlichen Frage:
Ich lese überall, dass ein Hash folgend notiert wird:
%adresse = ("Vorname" => "Stefan",
"Nachname" => "Schultz",
"Ort" => "Berlin");
Soweit korrekt.
> Soweit so klar - aber ich finde hier überall nur Beispiele mit einem Datensatz, wie muss ich den zweiten Datensatz hinzugeben? Stimmt meine Annahme, dass ich meine Daten wie folgt notieren muss:
>
>
> ~~~perl
> %zugangsdaten = ("User" => "Stefan", "Martin",
> "Pass" => "user1", "user2");
Nein. Du möchtest einen Hash ganz einfach so erweitern.
Folgendes sind Äquivalente
a)
my %zugangsdaten = (); # initialisiere einen leeren Hash
$zugangsdaten{Stefan} = "user1";
# Weise dem Schlüssel "Stefan" den Wert "user 1" zu
und b)
my %zugangsdaten = ( Stefan => "user1");
Ich komme jetzt auf deine Struktur:
%zugangsdaten = ("User" => "Stefan", "Martin",
"Pass" => "user1", "user2");
Das ist gelinde gesagt, ein Perl Error, der kein Error anzeigt
Denn => ist das gleiche wie ein Komma
Du hast also geschrieben:
%zugangsdaten = (
"User" => "Stefan",
"Martin", "Pass" =>
"user1", "user2");
[/code]
Das hast du wohl nicht gemeint.
Was annähernd ähnlich deiner Absicht ist:
~~~perl
%zugangsdaten = (
"User" => ["Stefan", "Martin"],
"Pass" => ["user1", "user2"],
);
Hier haben wir einen Hash of Arrays.
Die Array sind aber anonyme Arrayreferenzen.
Das ist eine blöde Struktur um nach dem namen oder dem passwort zu suchen,
weil beide nicht schlüssel, sondern anonyme Elemente im Array sind.
Du müsstest über den ganzen Hash iterieren, um nur den Namen zu finden.
Mal nur das.
mfg Beat