Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [Perl]: Der Kamp mit den Referenzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.11.2004
    Beiträge
    35

    [Perl]: Der Kamp mit den Referenzen

    Hallo,

    ich bin dabei mir ein Skript zu schreiben um meine Musiksammlung erstmal auszugebe. Danach möchte ich das ganze auch vielleicht damit verwalten, aber estmal nur HTML ausgeben. Erstens möchte ich einen Index aller Artists und Alben haben, und drunter halt die komplette Liste aller Musikstücke, von wo raus eben aus dem Index mit einem Link verwiesen wird. Die Infos nehme ich aus den Mp3-Tags mithilfe von MP3::TAG und sie werden Schleife fuer Schleife temporaer in $artist, $album, $track und $title gespeichert.

    Das eigentliche Problem liegt mir beim ausgeben. Ich verstehe das Problem mit den Referenzen nicht. perldsc hat mir auch nicht weitergeholfen.

    Vielleicht kann mir einer weiterhelfen. Hier der Code:

    Code:
    push @music, { $artist, $album, $track, $title };
    Das Ausgeben kapier ich halt nicht, und die Snippets aus perldsc helfen mir auch nicht weiter.

    mfG

  2. #2
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von coolpix
    Das eigentliche Problem liegt mir beim ausgeben. Ich verstehe das Problem mit den Referenzen nicht.

    mfG
    Ist Teil jeden Kurses oder Ausbildung.!?

    Such mal nach

    call-by-value
    call by reference

    und du wirst fündig.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Sieh Dir auch mal
    Code:
    perldoc perlref 
    perldoc perlreftut
    an.

    Dein Code zum speichern der Referenz ist auch nicht ganz richtig...
    Du willst:

    Code:
    
    $ARRAY = (
      [0] -> ['wert1',   'wert2',   'wert3',   'wert4'],
      [2] -> ['wert11',  'wert22',  'wert33',  'wert44'],
      [3] -> ['wert111', 'wert222', 'wert333', 'wert444']
    )
    
    Du hast:
    Code:
    
    $ARRAY = (
      [0] -> { 'schluessel1'    => 'wert1',    'schluessel2'    =>    'wert2' },
      [1] -> { 'schluessel11'   => 'wert11',   'schluessel22'   =>   'wert22' },
      [2] -> { 'schluessel111'  => 'wert111',  'schluessel222'  =>  'wert222' },
    )
    
    Ein Hash ist zwar, genau wie ein Array auch, nur eine Liste von Skalaren, hat aber den Unterschied, dass die Anzahl der Elemente eines Hashes durch zwei teilbar sein muss... es werden ja immer Key-Value Paare gespeichert.
    Der Operater => ist auch nur ein Synonym für das Komma . Daher funktioniert Dein Code ohne Warnungen.

    Trotzdem: Du erzeugst durch das {} eine Hashreferenz (Zeiger). Ersetze die {} gegen [] und alles wird gut

    Element X vom Array @music enthält dann also eine Referenz (einen Zeiger) auf ein weiteres Array, indem dann wiederum Deine Werte liegen.

    in den o.g. Perldocs suchst Du mal derefence bzw. unter "Using References -> Absatz 2".
    Dort steht, wie Du wieder an Deine Werte rankommst

  4. #4
    Registrierter Benutzer
    Registriert seit
    12.11.2004
    Beiträge
    35
    Hallo,

    vielen Dank fuer die Antworten. Mein Problem hat sich mittlerweile geloest, mein Problem war eher die schlechte Organisierung. Ich hab halt nun ein hash genommen, das eine Referenz zu $artist und $album, und dann noch ein Hash mit $track => $title hat.

    mfG

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •