1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Perl - Array in indexed Array möglich ?

  • NickK
  • 23. Januar 2014 um 14:46
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • NickK
    Punkte
    310
    Beiträge
    46
    • 23. Januar 2014 um 14:46
    • #1

    Hallo,

    eine Frage an die Perl-kundigen :) ist es möglich in ein indexed Array ein eindimensionales Array mit zwei numerischen Elementen reinzustellen ? Ich hab mal das probiert aber so funktionierts nicht:


    Der erste Teil funktioniert noch:

    Code
    #! /usr/bin/perl -w
    
    
    
    
    my %stations1 = (       "Stat_A" => 1234567,
                            "Stat_B" => 7654321  );
    
    
    
    
    if (defined($stations1{"Stat_A"})) {
        printf STDOUT ("   %d\n", $stations1{"Stat_A"});
    } else {
        printf STDOUT ("index Stat_A not defined\n");
    }
    
    
    if (defined($stations1{"Stat_B"})) {
        printf STDOUT ("   %d\n", $stations1{"Stat_B"});
    } else {
        printf STDOUT ("index Stat_B not defined\n");
    }
    
    
    if (defined($stations1{"Stat_C"})) {
        printf STDOUT ("   %d\n", $stations1{"Stat_C"});
    } else {
        printf STDOUT ("index Stat_C not defined\n");
    }
    
    
    
    
    printf STDOUT ("Part 1 done OK\n\n");
    Alles anzeigen

    der zweite Teil aber nicht:


    Code
    ...
    
    
    my %stations = (        "Stat_A" => (1234567, 15),
                            "Stat_B" => (7654321,  5)  );
    
    
    if (defined($stations{"Stat_A"})) {
        printf STDOUT ("   %d   %d\n", $stations{"Stat_A"}[1], $stations{"Stat_A"}[2]);
    } else {
        printf STDOUT ("index Stat_A not defined\n");
    }
    
    
    if (defined($stations{"Stat_B"})) {
        printf STDOUT ("   %d   %d\n", $stations{"Stat_B"}[1], $stations{"Stat_B"}[2]);
    } else {
        printf STDOUT ("index Stat_B not defined\n");
    }
    
    
    if (defined($stations{"Stat_C"})) {
        printf STDOUT ("   %d   %d\n", $stations{"Stat_C"}{1}, $stations{"Stat_C"}{2});
    } else {
        printf STDOUT ("index Stat_C not defined\n");
    }
    Alles anzeigen


    da kommt nämlich folgendes raus:

    1234567
    7654321
    index Stat_C not defined
    Part 1 done OK

    Use of uninitialized value in printf at ./test2.pl line 35.
    Use of uninitialized value in printf at ./test2.pl line 35.
    0 0
    index Stat_B not defined
    index Stat_C not defined

    Einmal editiert, zuletzt von NickK (23. Januar 2014 um 14:51)

  • emptyvi
    Punkte
    2.037
    Beiträge
    374
    • 24. Januar 2014 um 16:36
    • #2

    Hi!

    Da sind zwei Fehler drin.. Erstens: du brauchst ein anonymes Array für verschachtelte Strukturen (das lieferte dir eine Referenz zurück). --> Statt den runden Klammern in deinem Hash, eckige für die Arrays benutzen.
    Zweitens: Indices beginnen in Perl wie in vielen anderen Sprachen auch, bei 0 und nicht bei 1 (statt 1 und 2 die Indices 0 und 1 verwenden). Außerdem hast du in deinem dritten if plötzlich geschwungene Klammern verwendet, um die Positionen im Array anzusprechen, statt eckiger.

    Code
    #! /usr/bin/perl -w
    
    
    
    
    my %stations = (        "Stat_A" => [1234567, 15],
                            "Stat_B" => [7654321,  5]  );  
    
    
    
    
    if (defined($stations{"Stat_A"})) {
        printf STDOUT ("   %d   %d\n", $stations{"Stat_A"}[0], $stations{"Stat_A"}[1]);
    } else {
        printf STDOUT ("index Stat_A not defined\n");
    }
    
    
    
    
    if (defined($stations{"Stat_B"})) {
        printf STDOUT ("   %d   %d\n", $stations{"Stat_B"}[0], $stations{"Stat_B"}[1]);
    } else {
        printf STDOUT ("index Stat_B not defined\n");
    }
    
    
    
    
    if (defined($stations{"Stat_C"})) {
        printf STDOUT ("   %d   %d\n", $stations{"Stat_C"}[0], $stations{"Stat_C"}[1]);
    } else {
        printf STDOUT ("index Stat_C not defined\n");
    }
    Alles anzeigen
  • NickK
    Punkte
    310
    Beiträge
    46
    • 24. Januar 2014 um 17:32
    • #3

    Danke sehr !!

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Tags

  • perl array frage
  1. Datenschutzerklärung
  2. Impressum