Using a variable name as the key name in a hash (Perl) -
this question has answer here:
i have block of perl code want simplify. it's part of subroutine, series of arguments added values hash of hashes.
$user{$account_num}{'item0'} += $item0; $user{$account_num}{'item1'} += $item1; $user{$account_num}{'item2'} += $item2; $user{$account_num}{'item3'} += $item3; $user{$account_num}{'item4'} += $item4; $user{$account_num}{'item5'} += $item5; $user{$account_num}{'item6'} += $item6; you can see variable names same key names. seem remember watching friend kind of thing in 1 line once. like:
[looping through input arguments]: $user{$account_num}{'variable_name'} += $variable_name; does know of way this?
you're on thinking it.
i can tell because of time:
me: if make device can vibrate socket right frequency, can cause bulb screw , unscrew. can attach device socket...
my son: dad, why don't use light switch?
if have bunch of items called item1, item2, item3, etc. why not make array of items? have $item[0], $item[1], etc. simplify code:
for item ( @items ) { $user{$account_name}->[$item] += $items[item]; } maybe using item1 , item2 stand-ins actual variable names. maybe they're $widget , $left_handed_smoke_shifter. in case, can make hash of items, have $item{left_handed_smoke_shifter} , $item{widget}. then, loop this:
for $item ( keys %items ) { $user{$account_name}->{$item} += $items{$item}; } simple, easy understand , maintain.
however, if really, insist need able use variable names way insist, use eval:
$user{$account_name}->{$varible_name} = eval '$' . "$variable_name"; i sell lengths of ropes long enough hang it. none of business.
Comments
Post a Comment