2011-01-17 6 views
2

In Schreiben einer Client-API in Perl mit FRONTIER :: CLIENT-Modul. Ich versuche, ähnlich wie folgt in Perl zu tun:Hashmap in Perl

HashMap<Integer, String> message = (HashMap<Integer, String>)client.execute("APIWrapper.login"); 
System.out.println(message.get(1000)); 

Wie implementiere ich die gleiche Idee in Perl?

Antwort

7

Hashmaps sind eine native Perl-Datenstruktur. Jede Variable, die mit dem Hash-Symbol% ​​deklariert wird, ist ein Hash, der Schlüsselwertpaare speichert. Siehe diese Dokumentation unter Perl data types. Siehe auch die Perl Data Structures Cookbook.

bearbeiten

See this example

# This can be anything which returns pairs of strings 
my %login_message = getData(); # ('key1' => 'value1', 'key2' => 'value2'); 

for my $key (keys %login_message) { 
     print "key: $key, value: $login_message{$key}\n"; 
} 

sub getData { 
     return ('key1' => 'value1', 'key2' => 'value2'); 
} 

Ausgänge:

key: key2, value: value2 
key: key1, value: value1 
+0

Ich habe das Folgende gefunden, aber ich habe diese Ausnahme: "GESUCHTE DATEN, GOT TAG VALUE. my% login_message = {$ server-> call ("APIWrapper.loginRequest")}; while ((mein $ Schlüssel, mein $ Wert) = jeder% login_message) { print "Schlüssel: $ Schlüssel, Wert: $ login_message {$ Schlüssel} \ n"; } – Gruther

+0

Siehe meine Bearbeitung oben. –

+0

Das habe ich mir ausgedacht: my% login_message = ($ server-> call ("APIWrapper.loginRequest", @credentials)); für meine $ Schlüssel (Schlüssel% login_message) { print "Schlüssel: $ Schlüssel, Wert: $ login_message {$ Schlüssel} \ n"; } UND der Ausgang bleibt immer noch gleich: GESUCHTE DATEN, GOT TAG 'VALUE' – Gruther

4

Der folgende Code ist ein Beispiel für einen Hash in Perl:

my %data = (
    red => 1, 
    blue => 37, 
    green => 99, 
); 

print $data{'red'}, "\n"; 
+0

Danke Jungs für Ihre Beiträge. Ich habe es geschafft, den Fehler zu beheben. Das Problem war im Grenzmodul. Ich wechselte zu XML :: RPC :: FAST und alle scheinen gut. Warum dauert Integer nicht mehr als 9 Zeichen. Kann ich Long Integer in Perl oder Bigint etwas in dieser Richtung finden? – Gruther