Hallo Stefan,
Ich habe mal ein bischen im Archiv gestöbert, und habe dabei folgendes gefunden (http://www.teamone.de/selfhtml/sfarchiv/2000_4/t23286.htm#a119482):
$pword = join'', map { chr($_) } (36..128)[ eval "int(rand(128-36))," x 8 ];
Für meine URL müsste ich die zulässigen Zeichen also z. B. auf Buchstaben und Zahlen beschränken.
Es ehrt mich, daß jemand von mir geposteten Code verwendet :-).
Da die anderen beiden ja schon Möglichkeiten genannt haben, will ich ein paar Erklärungen zu obigem Code liefern.
Das Geheimnis der Buchstaben auswahl liegt in (36..128). Aus diesem Zahlenvorrat werden durch das hinten anstehende Konstrukt aus der eckigen Klammer mit eval und int(rand()) zufällig Werte entnommen und an map() weitergereicht.
Dort werden die Zahlenwerte mit chr() in Ascii-Zeichen umgewandelt um anschließend von join() zu einem String verkettet zu werden.
Die Zahlen habe ich genommen, weil der Bereichsoperator .. damit schöner arbeitet, und der Bereich der erzeugten Zufallszahlen einfach berechnet werden kann.
Wenn Du direkt Ascii-Werte verwenden willst, kannst Du das map {..} weglassen und statt (36..128) so etwas wie ('a'..'z','A'..'Z',0-9) schreiben. Dann muss hinten allerdings rand(62) stehen, damit der Bereich der Zufallszahlen wieder stimmt.
Gruß AlexBausW
P.S.: Ich glaube statt ASCII-128 als letztes Zeichen sollte man vielleicht doch nur bis 126 (~) gehen (127 = , 128 ~ Ç ) ;-)