WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 04.10.2002, 16:13   #1
PredeX
Senior Member
 
Registriert seit: 03.09.2001
Alter: 41
Beiträge: 165


Standard Perl - Frage

Hi,

ich versteh da ein stücken Code ned, dass ich in einem Inet-Tutorial gsehn hab, und bitte um Erklärung erfahrenerer PerlProgrammierer als ich es bin

Code:
#!/usr/bin/perl -w

@zeichen = ('A'..'Z', 'a' .. 'z', 0 .. 9);
$passwort = join("", @zeichen[map{rand @zeichen}(1 .. 8)]);

print "Ihr Passwort : $passwort\n";
Wieso sind da eckige KLammern nach dem Array @zeichen?? und nur um sicherzustellen um ich da richtig liege: bei map legt man ja zuerst einen Ausdruck, der die Elemente des nachfolgenden Arrays, verändert. In diesem Fall dient dieser Array dazu, dass das Passwort aus 8 Zeichen bessteht oder??

Danke schon im voraus

Mfg
Sebastian Gabmeyer aka PredeX
____________________________________
There are 10 types of people, those who understand binary and those who don\'t...

Ask Me No Questions, And I Tell You No Lies!
PredeX ist offline   Mit Zitat antworten
Alt 04.10.2002, 18:46   #2
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

map erwartet eine expression und eine Liste als Parameter, wobei die Espression auf jeden Wert der Liste angewendet wird.
Die Expression steht innerhalb der {} - die Liste ist das "(1..8)".

IMHO ist bei "rand @zeichen" das "@zeichen" unnötig und könnte durch "62" ersetzt werden, da @arryname im skalaren Kontext die Länge des Arrays zurückliefert.

Jedenfalls wird "rand 62" 8 mal aufgerufen => es entsteht eine liste (array) aus 8 Kommazahlen.

Die Notation @array[index1, index2, ....] beschreibt einen Bereich (slice) eines Arrays. z.b würde "@array[1,2,5]" eine Liste (Array) bestehend aus dem ersten, zweiten und fünften Element das Arrays @array zurückliefern.
Genauso ist es in diesem Fall. Die Kommastellen der 8 Kommazahlen werden abgeschnitten und stellen somit eine Liste von 8 Indexwerten dar, über die 8 Elemente des Arrays @zeichen ausgewählt werden und als Liste (array) zurückgekliefert werden.
Mit join macht man dann aus dem Array noch einen String.

Alles klar?
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 07.10.2002, 01:08   #3
PredeX
Senior Member
 
Registriert seit: 03.09.2001
Alter: 41
Beiträge: 165


Standard

Also mal danke für die tolle Erklärung, an slices hab ich nämlich überhaupt ned dacht und an den sklaren Kontext von @zeichen in rand @zeichen schon gar ned

Aber dennoch hab ich eine Frage: Wieso/wodurch werden bei den acht durch die von rand generierten Zahlen die Kommastellen abgeschnitten??

MfG

PredeX
____________________________________
There are 10 types of people, those who understand binary and those who don\'t...

Ask Me No Questions, And I Tell You No Lies!
PredeX ist offline   Mit Zitat antworten
Alt 07.10.2002, 03:15   #4
allwissende Müllhalde
Inventar
 
Registriert seit: 28.12.2000
Beiträge: 1.693


Standard

Meine rudimentären Programmierkentnisse sagen mir daß Du
oben mit
@zeichen = ('A'..'Z', 'a' .. 'z', 0 .. 9);
definiert hast welche Werte gültig sind, eben 0 - 9 ganze Zahlen
(oder ist das ein Array ?) - in dem ja dann nichts anderes drinnen ist als diese Möglichkeiten also auch nichts anderes herausgeholt werden kann.
Naja, heute früh wird sich schon jemand melden der es (sicher) weiß
____________________________________
Nordick-Wogging
Dumm-ness boomt
Ihr Fengshui Berater
Eurofighter abfangen !
allwissende Müllhalde ist offline   Mit Zitat antworten
Alt 07.10.2002, 05:29   #5
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

@am: das hat nixh mit dem array @zeichen zu tun.

Slices wollen als index nur Integers. Damit führt Perl automatsisch eine Typenkonvertierung (Gleitkomma -> Integer) in Form des Abschneidens der Kommastellen durch.
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 07.10.2002, 10:34   #6
PredeX
Senior Member
 
Registriert seit: 03.09.2001
Alter: 41
Beiträge: 165


Standard

thx _m3

MfG
Sebastian Gabmeyer aka PredeX
____________________________________
There are 10 types of people, those who understand binary and those who don\'t...

Ask Me No Questions, And I Tell You No Lies!
PredeX ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:22 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag