Thread Struct array und unterprogramm (20 answers)
Opened by Eles at 2010-10-28 13:29

clms
 2010-10-28 22:35
#142315 #142315
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
Guest Eles
Da ich bis her nur in C++ etwas gemacht habe muss ich mich erst mal in Perl einarbeiten.
Deinem "Perl"-Code sieht man an, dass Du sonst C/C++ programmiert.
Perl ist bzgl. Syntax-Stil zwar ziemlich flexibel, es macht aber trotzdem Sinn, die Programme "perliger" - und nicht als C - zu schreiben.

Guest Eles
Zu den jetzigen Problem ist es so, dass die Artikel nach Preis bzw. Anzahl sortiert werden können sollen. Mein Lösungsansatz wäre gewesen alle Artikel von der Kategorie in einen Struct zu sammeln und zu sortieren. Da in den Unterprogramm die Artikel alle ordentlich aus der Datenbank ausgelesen werden aber gleich einzeln ausgegeben werden wollte ich gleich darüber das Struct füllen, woran ich jedoch scheitere wegen mangelnder Perl Kenntnisse.

a) Anders als in C/C++ musst Du in Perl Datenstrukturen nicht vordeklarieren. CPAN:Class::Struct habe ich noch nie benutzt und sehe auch nicht, was es hier groß bringen soll. Wenn Du viel mit einer Datenstruktur arbeitest (hier z.B. ein Artikel), lkann es sich lohnen daraus ein richtiges Objekt zu machen. Wenn Du die Datenstruktur nur ein bischen sortieren und filtern willst, genügt ein (anonymes) Hash oder Array.

Wie bekommst Du die Artikel aus der Datenbank angeliefert? (das fehlt in Deinen Code-Schnipseln) Die sind dort wahrscheinlich schon in einer Datenstruktur. Wenn diese nicht völlig verkorkst ist, würde ich sie an deiner Stelle beibehalten und gar nicht versuchen, die Artikel in eine neue Struktur zu pressen.

b) Deine for-Schleifen sind extrem C-geprägt. Perl hat eine viel bessere Unterstützung für die Verarbeitung von Listen. Schau Dir mal (mit perldoc -f ...) grep, map und das schon erwähnte sort an. Wenn Du dann immer noch über jedes Listenelement einzeln iterieren willst, kannst Du foreach nehmen.

View full thread Struct array und unterprogramm