If you want to keep your hash structure, here are 2 alternatives that do not lose data:
The first one uses the ad# as the key (inverse of your example).
The second one uses the percent as key, but stores the Ad#'s as Values in a HOA.
#First way - Ad# as key:
my $str='27:43:33:21:23:19:27:6';
my( $temp,%h);
%h= map {if($temp){
my $y=$temp;
$temp=undef;
$_=>$y
}else{
$temp=$_;
undef()=>undef;
}
} split/:/,$str;
delete $h{undef()};
print qq($_=>$h{$_}\n) for keys %h;
#Second way - using a HOA
my $str='27:43:33:21:23:19:27:6';
my( $temp,%h);
for ( split/:/,$str){
if($temp){
push @{$h{$temp}},$_;
$temp=undef;
}else{
$temp=$_;
}
};
print qq($_=> @{$h{$_}}\n) for keys %h;
Earth first! (We'll rob the other planets later)