perl: mehrdimensionales array

Diskutiere perl: mehrdimensionales array im Ruby, php, Perl, Python ... Forum im Bereich Programmieren unter Linux/Unix; Hi, hab ein Anfaengerproblem, und zwar: ich uebergebe meinem Script mehrere werte zb. > perl meinscript.pl foo,bar,whatever Die Werte kommen...

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

    =executor= Guest

    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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. Perl 6 in Raku umbenannt

    Perl 6 in Raku umbenannt: Perl 6 heißt ab jetzt Raku. Die jetzt vollzogene Änderung beendet nicht nur eine langjährige Diskussion um den Namen, sondern auch die Konfusion...
  3. perl: Zusammenführen von Zeilen, die mit Leerzeichen beginnen.

    perl: Zusammenführen von Zeilen, die mit Leerzeichen beginnen.: Hallo, Hintergrund: Das LDIF-Format trennt Zeilen, die größer als 80 Zeichen sind und schreibt in die nächste Zeile ein Leerzeichen. Beispiel:...
  4. perl Hochkommata um Worte im String einfügen?

    perl Hochkommata um Worte im String einfügen?: Hallo, $attributes=' cn dn uid ' wie fasse ich alle Worte in Hochkommata, so dass $attributes=' "cn" "dn" "uid" ' ist? Danke Tom
  5. 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...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden