2 Stimmen

Wie kann ich eine Schleife durch eine Raute ziehen?

Gegeben ist die folgende Variable:

$test = {
  '1' => 'A',
  '2' => 'B',
  '3' => 'C',
  '4' => 'G',
  '5' => 'K',
}

Wie kann ich alle Zuweisungen durchlaufen, ohne zu wissen, welche Schlüssel ich habe?

Ich möchte ein Auswahlfeld mit den Ergebnissen als Beschriftung und den Schlüsseln als versteckte Werte füllen.

5voto

Toto Punkte 85935

Führen Sie einfach eine foreach-Schleife über die Tasten aus:

#!/usr/bin/perl
use strict;
use warnings;

my $test = {
  '1' => 'A',
  '2' => 'B',
  '3' => 'C',
  '4' => 'G',
  '5' => 'K',
};

foreach my $key(keys %$test) {
    print "key=$key : value=$test->{$key}\n";
}

Ausgabe:

key=4 : value=G
key=1 : value=A
key=3 : value=C
key=2 : value=B
key=5 : value=K

4voto

Naveed Punkte 726

Sie können die eingebaute Funktion each :

while (my ($key, $value) = each %$test) {
  print "key: $key, value: $value\n";
}

3voto

Quentin Punkte 850700

Sie können herausfinden, welche Schlüssel Sie haben mit keys

my @keys = keys %$test; # Note that you need to dereference the hash here

Sie können auch alles in einem Durchgang machen:

print map { "<option value='$_'>$test->{$_}</option>"  } keys %$test;

Aber Sie würden wahrscheinlich eine Art von Ordnung wollen:

print map { "<option value='$_'>$test->{$_}</option>"  } sort keys %$test;

und es wäre mit Sicherheit besser, die HTML-Generierung in ein separates Programm auszulagern. Vorlagensystem .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X