Thread Array ist nicht Array?!?: Was ist eigentlich ein Array in Perl? (23 answers)
Opened by highlander at 2006-04-07 17:02

sid burn
 2006-04-09 22:07
#64554 #64554
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=lichtkind,09.April.2006, 19:42]die autorität heisst nicholas clark aber soweit ich mal die perl5 internals überflogen hab sind das alles seltsame structs mit vielen queverweisen. ich nehme an ein perl array ist ein echter erray aus diesen structs und wenn man neue brauch werden ein paar neue gemacht (nicht jedesmal). umkopiert wird das ganze nur wenn der speicherbereich generell zu klein für erweiterungen wird. wobei ich das selber nicht verstehe fa neue elemente je irgendwo im speicher gebildet werden können und man ja dann zeiger drauf legen kann.[/quote]
Genau so hatte ich mir das gedacht.
Anscheind ist ein Perl Array keine richtige Liste. Es muss also nicht jedes Element durchlaufen werden, um zu Element 500 zu kommen.

Allerdings ist es anscheind auch kein richtiges Array. Also das, dass Array an einer Speicherstelle beginnt, und man dann die Speicherstellen dazu addieren kann, um Element 1, Element 2 etc. zu bekommen.

Anscheind hat man ein Array, dass die unterschiedlichen Speicherstellen der unterschiedlichen Elemente enthält. Greift man auf Element 500 wird auf eine Speicherstelle verwiesen die auf einer Struktur zeigt, wo sich der Inhalt befindet.

Letztendlich wird beim vergößern des Arrays dann nur die tabelle mit den Speicherorten neu angelegt, und umkopiert. Aber nicht die Inhalte des Arrays.


Rein theoretisch ist es auch unmöglich das ein Perl Array ein echtes Array ist. Den bei einem echten Array muss jedes Element gleich groß sein, wenn das nicht der Fall ist könnte ich ja nie von der Ursprungsadresse ausgehen, und dann bestimmte Bytes hochzählen um zum nächsten Element zu kommen. Ich weiß ja nie wie groß das nächste Element ist.

Aber bei Perl ist es ja gerade nicht der Fall das jedes Element gleich groß ist. Ich kann ja ein String beliebiger größe mit Zahlen mischen wie ich Lustig bin.


Vielleicht sollte man auch einfach Perl vertrauen das alles gut und schnell geht, und sich keine größere Gedanken darüber machen. Immerhin Programmieren wir mit Perl und nicht mit C, damit wir uns nicht mit solchen Sachen befassen müssen. *g*\n\n

<!--EDIT|sid burn|1144606205-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Array ist nicht Array?!?: Was ist eigentlich ein Array in Perl?