Thread Wieso läuft dieses Skript unendlich lange?! (18 answers)
Opened by Gast at 2005-09-27 11:34

renee
 2005-09-27 12:11
#5697 #5697
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
in @_ stehen die Parameter, die an die Methode übergeben werden. Die Elemente aus dem speziellen Array (siehe Wiki:perldoc perlvar) werden in die Liste ($statement,@array gespeichert. Dadurch landet Dein SELECT-Statement in $statement.
Du hast in Deinem Skript mit $_[0] auf das erste Element von @_ zugegriffen.

Code: (dl )
1
2
3
while(my $hashref = $sth->fetchrow_hashref()){
push(@array,$hashref);
}


solange das fetchrow_hashref() mir eine Hashreferenz zurückliefert, also solange Einträge selektiert wurden, schiebe die Hashreferenz in das Array (siehe perldoc -f push).

@{...} dereferenziert eine Arrayreferenz. Ich habe in der Methode eine Referenz auf ein Array zurückgeliefert. Damit ich auf die einzelnen Elemente zugreifen kann, muss ich erst dereferenzieren. Zu Referenzen lesenswert: Wiki:perldoc perlrefut (ist in Deutsch).

Ein nützliches Modul zum Betrachten von solchen Datenstrukturen ist CPAN:Data::Dumper. Du kannst Dir ja mal zum Spaß die Referenz ausgeben lassen mit:
Code: (dl )
1
2
3
4
use Data::Dumper;

my $arref = selecthashref("SELECT * FROM ordner ORDER BY ordnername ASC");
print Dumper($arref);


Da kannst Du Dir mal anschauen, was in $arref alles drinsteckt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread Wieso läuft dieses Skript unendlich lange?!