![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Senior Member
![]() Registriert seit: 03.09.2001
Alter: 41
Beiträge: 165
|
![]() 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"; 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! |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() 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 . |
![]() |
![]() |
![]() |
#3 |
Senior Member
![]() Registriert seit: 03.09.2001
Alter: 41
Beiträge: 165
|
![]() 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! |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() Registriert seit: 28.12.2000
Beiträge: 1.693
|
![]() 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 ! |
![]() |
![]() |
![]() |
#5 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() @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 . |
![]() |
![]() |
![]() |
#6 |
Senior Member
![]() Registriert seit: 03.09.2001
Alter: 41
Beiträge: 165
|
![]() 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! |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|