![]() |
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 Danke schon im voraus Mfg Sebastian Gabmeyer aka PredeX |
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? |
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 |
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ß |
@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. |
thx _m3
MfG Sebastian Gabmeyer aka PredeX |
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag