perl: mehrdimensionales array

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von =executor=, 03.09.2007.

  1. #1 =executor=, 03.09.2007
    =executor=

    =executor= Grünschnabel

    Dabei seit:
    03.09.2007
    Beiträge:
    1
    Zustimmungen:
    0
    Hi,
    hab ein Anfaengerproblem, und zwar:
    ich uebergebe meinem Script mehrere werte zb.
    > perl meinscript.pl foo,bar,whatever
    Die Werte kommen in das Array @provider, was bis dahin auch funktioniert
    Jetzt will ich ein mehrdimensionales Array basteln in dem alle Werte aus @provider im Format @prov_eingabe vorhanden sind.
    Also das Array @choosen_provider soll am Ende so aussehen:
    Code:
    @choosen_provider = ([@prov_foo], [@prov_bar], [@prov_whatever]);
    Soweit bin ich:
    Code:
    if (defined $ARGV[0]) {
          my @provider = split(/,/, $ARGV[0]);
          foreach (@provider) {
             push(@choosen_provider, \@prov_$_);
             $go = 1;
          }
     }
    
    Perl bring die Fehlermeldung:
    Scalar found where operator expected at iparray.pl line 36, near "@prov_$_" (#1)
    Er will also irgendeinen Operator um @prov_ und $_ zu verbinden?
    Ich hoffe ich hab das einigermassen verstaendlich erklaert ^^
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 angelsfall, 03.09.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Hallo,

    dynamische Variablennamen sollte man eigentlich nicht verwenden. Was genau willst du damit bezwecken?
    Ausserdem macht das so keinen Sinn, was du da schreibst. Wie du richtig erkannt hast, sind mehrdimensionale Arrays in Perl anonyme Referenzen, zumindest ab Dimension 2. Daher bringen dir die Namen nichts, du kannst sie nur mit Array[x][y] etc ansprechen.
    Was du sicher willst, sind Hashes.

    Code:
    #!/usr/bin/perl -wl
    
    use strict;
    
    my %provider;
    
    if (defined $ARGV[0]) {
      $provider{$_}++ for (split(/,/, $ARGV[0]));
    }
    
    (Ansonsten funktionieren dynamische Variablennamen so: )
    Code:
    ${"prov_" . $_}
    
     
  4. #3 Wolfgang, 03.09.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Du kannst eine Referenz nicht mit einem String verbinden! Und mit dieser Methode nichtmal Strings untereinander. Dafür gibt es den Punkt .
    Und wenn du schon dynmische lexikalische Variablen verwenden willst (was du nicht machen solltest), dann stelle wenigstens sicher, dass sie existieren!
    Sonst geht das schnell in die Hose.

    angelsfall hat dir schon gezeigt, dass dafür Hashvariablen verwendet werden sollten.

    Gruß Wolfgang
     
Thema:

perl: mehrdimensionales array

Die Seite wird geladen...

perl: mehrdimensionales array - Ähnliche Themen

  1. Perl : mehrdimensionales array getSize();

    Perl : mehrdimensionales array getSize();: Hi gibt es eine möglichkeit die "länge" und "breite" eines 2dimensinalen arrays nur anhand der @matrix selbst auszugeben ? in der form $breite...
  2. Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern

    Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern: Das Hyperledger-Projekt der Linux Foundation will eine neue Form der dezentralisierten Kontoführung nach dem Prinzip der »distributed ledger« bei...
  3. Perl 6 offiziell vorgestellt

    Perl 6 offiziell vorgestellt: Wie erwartet, ist die Version C(hristmas) von Perl 6 veröffentlicht worden. Perl 6 stellt nicht, wie der Name suggeriert, einen Nachfolger von...
  4. Perl: 20 Jahre CPAN

    Perl: 20 Jahre CPAN: Vor 20 Jahren wurde das erste Modul in das Comprehensive Perl Archive Network (CPAN) hochgeladen, woran Neil Bowers mit einem Abriss der...
  5. Perl 5.22.0 freigegeben

    Perl 5.22.0 freigegeben: Die neue Version 5.22 von Perl bringt den Anwendern mehr Sicherheit bei Eingabedateien, Unicode 7.0 und zahlreiche weitere Verbesserungen....