in reply to Using a Regex to parse into keys

The following example assumes these strings are sitting in a file somewhere,
that every instance of this search pattern has the possibility of more than one digit preceding the tilde,
and that there won't ever be an empty key.

{ local $/=undef; $string = <FILE>; #where FILE has been opened previously %colors = $string =~ /(\d+)~<font color="(.*?)"/ig; }
If your strings are sitting in an array, you could join the array $string = join '', @array;
If you data doesn't precisely match, it may be necessary to make it might be necessary to make the search pattern a little more general, but hope this helps for a start.

Cheers,
Kristina

Update: I didn't refresh to catch your replies before I hit submit, but ironically, this addresses your other concern, so it all works out in the end. This method is more efficient than a foreach loop.