Gustl: Array-Referenzen

Beitrag lesen

Hier hast du doch dein Array?

Ja - indem jetzt die einzelnen Referenzen stehen ...

Es geht auch: my @inh = @$ref;

Ja.

Aber warum? Du hast damit das Array doppelt im Speicher

Ironisch: Hab ja genug Speicher haha :)

Ich seh halt im Moment keinen anderen Weg, deshalb ja der Thread.

$ref ist eine Referenz auf Referenzen. @inh = @$ref; zerlegt die Referenz in die einzelnen Referenzen. In @inh stehen also nun x Datensätze, widerum als Referenz, die ich noch nicht wie gewünscht verarbeiten kann. Ich muss also diese "Referenzliste" widerum "aufdröseln", in eine zweite Liste bringen und musste dazu ne Schleife schreiben.

Was anderes ist mir eben nicht eingefallen. Meine Frage war wie es anders besser geht. Hmmm ...

Von Anfang an: Ich hol mir aus der SQL-Tabelle pro Datensatz 2 Werte.

my $selinh=$dbh->prepare('SELECT akz1,akz2 FROM inhalt') || die $DBI::errstr;  
  
$selinh->execute || die $DBI::errstr;

akz1 und akz2 sind Autokennzeichen. Diese Werte sind unterschiedlich oder nicht. Dann:

my $ref=$selinh->fetchall_arrayref;

Jetzt hab die Referenz auf die Referenzen in $ref. @inhalt muss nun alle AKZ´s einzeln beinhalten, damit ich den Hash entsprechend füttern kann.

[dieFragedesThreads] my @inhalt = Füttern mit Einzelwerten nicht als Referenzen.

Als nächsten Schritt muss ich doppelt vorkommende Strings entfernen und die Vorkommen zählen.

my %saw; grep !$saw{( split/;/,$_)[0]}++ , @inhalt;

Im Hash %saw steht als Name nun die Anzahl von Vorkommen und in Wert das Vorkommen. Aus diesen Werten bau ich eine Optionlist.

  
print "<select name=akz>";  
  
while (my ($v1, $v2) = each %saw)  
{  
  my $sel;  
  
  if ($akz eq $v1)  
  {  
    $sel="selected";  
  }  
    else  
  {  
    $sel="";  
  }  
  
  print "<option value=\"$v1\" $sel>$v1 [ $v2 ]</option>";  
}  
  
print"</select>";

Diese widerum kann dann zur Auswahl eines Kennzeichens benutzt werden, pro Kennzeichen steht auch schön die Anzahl der Datensätze pro Kennzeichen usw usw ...

Die Frage: Wie zerlege ich $ref am besten hab ich seit des DBI Threads. Ich verstehe auch den Sinn nicht warum es keine Möglichkeit gibt gleich von Anfang an mit -man verzeihe mir- "brauchbaren Werten" zu arbeiten. Das zerlegen von $ref ist ja nicht vermeidbar wenn man die Daten verarbeiten und ausgeben will. Warum also dieser "Umweg".

Also entweder ist schon der Ansatz fetchall_arrayref falsch oder was.

Gruss Gustl