ile karma değerini dinamik olarak atamak karma değerini dinamik olarak eval
bildirimi kullanmadan oluşturmak istiyorum. Bu kod eval
bildirimi ile düzgün çalışıyor, ancak eval
kullanmadan bunu gerçekleştirmek için daha iyi bir yolu var mı?
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$'
};
Sana 'strict' kullanırsanız sizin eval deyimi (ı istenen çıktıyı almak için benim testin çıkarmak için vardı) çalışacak sanmıyorum. –