2016-10-10 2 views
1

Ich bin immer verwirrend oder weiß nicht, wie man Hash in Perl behandelt.Perl Push-Werte in einem Hash

So, hier ist das Problem,

das Ganze betrachtet, ich versuche, die Schlüsselnamen in der folgenden Hash zu ändern.

my %hash_new = { 
    'customername' => 'Lee & toys', 
    'employee_name' => 'Checngwang', 
    'customer_id' => 'X82349K', 
    'customer_address' => 'classic denver ranch, meadows drive', 
    'types' => 'category la', 
}; 

my %selectCols = ('customername' => 'CUSTOMERNAME','employee_name' => 'EMP_NAME','customer_id' => 'cusid','customer_address' => 'cusaddr','types' => 'Typs'); 

my %new_hash =(); 

foreach my $hash_keys (keys %hash_new){ 
    my $newKey = $selectCols{$hash_keys}; 
    $new_hash{$newKey} = $hash_new{$hash_keys}; 
} 

print Dumper %new_hash; 

Ausgabe% new_hash ist so etwas wie ein Schlüsselwert Kombination von kontinuierlichen Zeichenfolge wie unten,

CUTOMERNAMELee & toysEMP_NAMEChecngwangcus_idX82349Kcusaddrclassic denver ranch, meadows driveTypscategory la 

Aber anstatt dies, ich brauche den Hash wie

$VAR1 = { 
     'CUSTOMERNAME' => 'Lee & toys', 
     'EMP_NAME' => 'Checngwang', 
     'cusid' => 'X82349K', 
     'cusaddr' => 'classic denver ranch, meadows drive', 
     'Typs' => 'category la', 
    }; 

Bitte Hilf mir dabei!

+1

Es tut mir leid, du musst etwas erweitern - ich kann nicht folgen, was du verlangst. Ich sehe in Ihrem Codebeispiel keine print-Anweisungen. – Sobrique

+0

geht es dir gut! Ich habe gerade die Druckanweisung aktualisiert – Raja

+0

Ich bin verwirrt. Was ist Ihre Eingabe und was ist die gewünschte Ausgabe? – yonyon100

Antwort

0

Wenn ich Sie richtig verstanden habe, dann dies funktioniert:

#!/usr/bin/perl 
use strict; 
use warnings; 
use Data::Dumper; 


my %hash_new = (
    'customername' => 'Lee & toys', 
    'employee_name' => 'Checngwang', 
    'customer_id' => 'X82349K', 
    'customer_address' => 'classic denver ranch, meadows drive', 
    'types' => 'category la' 
); 

my %selectCols = (
    'customername' => 'CUSTOMERNAME', 
    'employee_name' => 'EMP_NAME', 
    'customer_id' => 'cusid', 
    'customer_address' => 'cusaddr', 
    'types' => 'Typs' 
); 

my %new_hash =(); 

foreach my $hash_keys (keys %hash_new){ 
    my $newKey = $selectCols{$hash_keys}; 
    $new_hash{$newKey} = $hash_new{$hash_keys}; 
} 

print Dumper \%new_hash; 

Der einzige Code, den ich in Ihrem Code geändert wurde () statt {} in %hash_new mit und entkam dem % in der Dumper Aussage. Die % sollte maskiert werden, da Dumper einen Verweis erwartet, kein Hash (das gilt auch für alle anderen Perl-Variablentypen, die mit Dumper verwendet werden).

Ausgang:

$VAR1 = { 
     'Typs' => 'category la', 
     'cusaddr' => 'classic denver ranch, meadows drive', 
     'EMP_NAME' => 'Checngwang', 
     'cusid' => 'X82349K', 
     'CUSTOMERNAME' => 'Lee & toys' 
    }; 

Auch nicht verwendet verwirrende Namen wie %hash_new und %new_hash. Es ist - gut - verwirrend.

+0

Es tut mir leid für die variable Verwirrung! Es funktioniert gut :) – Raja

+0

@Yadheendran kein Schaden getan :) – yonyon100