2016-10-10 3 views
1

Я всегда сбиваю с толку или не знаю, как обрабатывать хэш в perl.Значения Perl push в хеше

Так вот проблема,

Учитывая все это, я пытаюсь изменить имя ключа в следующей хэш.

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; 

Выход% 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 ожидает ссылку, а не хэш (это верно также для всех других типов переменных Perl, которые используются с Dumper).

Выход:

$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

Смежные вопросы