Moin!
my @str = split //, $str;
$c = $str[17];Ah, das sieht interessant aus. Einmal den String zum Array splitten, und dann zigmal das Array direkt benutzen ...
Mich wundert aber, daß es in Perl keinen direkten Zugriff gibt ...
Das könnte daran liegen, dass der "direkte Zugriff auf ein Zeichen" in Perl gar nicht so trivial realisierbar ist, wie es ausschaut.
Zuerst denkt man ja: Ein Zeichen == Ein Byte, also einfach Stringposition plus Offset berechnen, und den dort gefundenen Bytecode als Zeichen behandeln.
Da Perl seit Version 5.8 aber Strings intern als UTF-8 speichert, wenn es notwendig ist, gilt die Zuordnung Zeichen==Byte nicht mehr - die Berechnung des Offsets wird wesentlich aufwendiger, und die Sache insgesamt kompliziert.
Erst wenn Strings intern als UTF-32 gespeichert werden würden, würde wieder ein konstantes Verhältnis gelten: 1 Zeichen == 4 Byte. Damit würde man allerdings den Speicherbedarf von normalen westeuropäischen Texten vervierfachen, ohne irgendeinen Mehrwert dafür zu erhalten.
- Sven Rautenberg
My sssignature, my preciousssss!