1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • 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
  • NickK
    6
    NickK
    Mitglied
    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
    14
    emptyvi
    Logo 2012, Platz 2.
    Reaktionen
    102
    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


    ¤¸¸.•´¯`•¸¸.•..>> Join the herd, join "My Little Pony @ TU-Wien" <<..•.¸¸•´¯`•.¸¸¤
    ¤¸¸.•´¯`•¸¸.•..>> (100% Twilight Sparkle approved) <<..•.¸¸•´¯`•.¸¸¤


    PP-Tutor WS2011 - WS2014
    EVC-Tutor SS2015


  • NickK
    6
    NickK
    Mitglied
    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Tags

  • perl array frage

Rechtliches

Impressum

Datenschutzerklärung