के साथ हैश गतिशील रूप से असाइन करने के लिए कैसे करें eval
कथन का उपयोग किए बिना मैं गतिशील रूप से %detail
हैश बनाना चाहता हूं। यह कोड eval
कथन के साथ ठीक काम कर रहा है, लेकिन eval
का उपयोग किए बिना इसे करने का कोई बेहतर तरीका है?
my @input=('INFO: Vikram 32 2012','SAL: 12000$','ADDRESS: 54, junk, JUNK');
my %matching_hash= (
qr/^INFO:\s*(\S+)\s+(\S+)\s+(\S+)/ =>['name','age','joining'],
qr/^SAL:\s*(\S+)/ => ['salary'],
qr/ADDRESS:\s*(.*)/ =>['address']
);
my %detail;
while(my ($regex, $array) = each(%matching_hash)) {
foreach (@input){
if(/$regex/) {
for(my $i=0;$i<=$#$array; $i++) {
$j=$i+1;
eval '$detail{$array->[$i]} = $$j';
}
}
}
}
use Data::Dumper;
print Dumper(\%detail);
++++++++++++++
$VAR1 = {
'name' => 'Vikram',
'address' => '54, junk, JUNK',
'age' => '32',
'joining' => '2012',
'salary' => '12000$'
};
मुझे नहीं लगता कि अगर आप सख्त 'उपयोग करते हैं तो आपका eval स्टेटमेंट काम करेगा (मुझे वांछित आउटपुट प्राप्त करने के लिए इसे अपने परीक्षण से हटा देना था)। –