Thread suchen und vergleichen (124 answers)
Opened by Kathrin at 2004-12-16 16:21

Strat
 2005-01-12 18:53
#32716 #32716
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ein paar Anmerkungen, wie ich das schreiben wuerde:

Die sub main wuerde ich rauskicken und den Inhalt derselben zum Hauptprogramm machen (vorausgesetzt, du rufst &main() nirgendwo anders auf):
1. sieht so C-aehnlich aus
2. verwendet variablen, die ausserhalb der subroutine deklariert wurden und nicht als parameter uebergeben wurden

Code: (dl )
1
2
3
4
5
6
7
8
9
10
while (my @row = $sth_suchen->fetchrow_array())
{
my %hash;
for(my $i = 0; $i < scalar @order; $i++)
{
$hash{$order[$i]} = $row[$i];
}

push @daten, \%hash;
}

wuerde ich mit ->fetchrow_hashref schreiben, weil du eh eine Hashreferenz haben willst, und da die Umwandlung von array -> hashref unnoetig ist:
Code (perl): (dl )
1
2
3
4
while (my $data = $sth_suchen->fetchrow_hashref())    {
  # hashslice der felder @order, und {} aussen herum -> hashreferenz
  push (@daten, { @hash{@order} } );
}

da ist der hashslice nicht schoen, also besser noch, beim select die felder angeben (ist i.d.R. vom SQL her schneller, weil da 1. nicht alle feldnamen ermittelt und 2. nicht alle felder zurueckgegeben werden muessen), die du haben willst, dann sparst du dir das @order und den hashslice, und kannst gleich schreiben
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
my $statement_suchen = qq~SELECT identnr, langtyp, 
  doctyp, docname, head, langtxt, datum, ersteller, werk,
  check1, check2, check3, check4, FROM tbl0011990
  WHERE ident_nr = '$identnr' ORDER BY docname~;

# ... prepare und execute

my @data = ();
while (my $data = $sth_suchen->fetchrow_hashref())    {
  push (@daten, $data);
}
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread suchen und vergleichen