2016-10-10 94 views
1

我總是感到困惑或不知道如何在Perl中處理哈希。Perl推送哈希值

所以現在的問題是,

考慮整個事情,我試圖在下面的哈希更改密鑰名稱。 %new_hash的

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; 

輸出是一樣的東西連續串如下的鍵值組合,

CUTOMERNAMELee & toysEMP_NAMEChecngwangcus_idX82349Kcusaddrclassic denver ranch, meadows driveTypscategory la 

但不是這個,我需要的哈希一樣,

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

請幫助我解決這個問題!

+1

對不起,你將不得不擴大一點 - 我不能跟隨你所問的。我的代碼示例中沒有看到任何打印語句。 – Sobrique

+0

你很好!我剛剛更新了打印聲明 – Raja

+0

我很困惑。你的輸入是什麼?期望的輸出是什麼? – yonyon100

回答

0

如果我理解正確的話,那麼這個作品:

#!/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; 

我在你的代碼更改的唯一代碼使用(),而不是在%hash_new{}和逃脫的Dumper聲明%。應該轉義%,因爲Dumper需要引用,而不是散列(對於使用Dumper的所有其他Perl變量類型也是如此)。

輸出:

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

另外,不要使用令人混淆的名字,如%hash_new%new_hash。這很好 - 令人困惑。

+0

我很抱歉變量混亂!它工作正常:) – Raja

+0

@Yadheendran沒有傷害做:) – yonyon100