나는 그것을 최적화 할 수있는 방법이나 더 나은 방법이 있는지를보기 위해 내가 만든 함수를 여러분과 함께 나누고 싶었습니다.키, 값 쌍의 해시를 어떻게 평평하게합니까?
sub flatten{
my($ref,$delim,$item_delim,$array,$str) = @_;
die("Required Hash Reference") unless isHash($ref);
$delim = $delim ? $delim :'_';
#dump into array hash vals #simplified
if(!$item_delim){
@{$array} = %{$ref};
}else{
my($keys,$values);
$keys = getKeys($ref);
$values = getValues($ref);
#item strings
if($#$keys > 0 && $#$values > 0){
#fix for issue where value[n] is empty
@{$array}= map{ (defined $$values[ $_ ]) ? $$keys[ $_ ].$item_delim.$$values[ $_ ] : $$keys[ $_ ].$item_delim } 0 .. int($#$keys);
}else{
log "No Values to flatten";
return '';
}
}
$str = join($delim,@{$array});
return $str;
}
여기서 알고 있어야하는 최적화 포인트가 있습니까?
는 기본적으로 나는
모듈이없는 솔루션은 내가 정말 효과적으로 해시를 평평하게하는 방법을 알고 싶어 선호업데이트 $STRING= key1=val1&key2=val2 ...
에
$HASH => {
key1 => 'val1',
key2 => 'val2',
key3 => 'val3',
}
에서 가고 싶어!
여기에있는 함수 중 일부는 단순히 말한 것을 수행하는 래퍼 함수임을 유의하십시오. isHash getKeys ... 신경 쓰지 마라!
왜 'isHash','getKeys','getValues' 같은 함수를 사용합니까? 이 부분은 회사 표준의 일부입니까? 그리고 참조 대신 간단한 배열과 해시를 사용할 수 있습니까? – Borodin