I also would like to see some improvement for $hfind.
My idea is to pass an hash table name instead of N when calling $hfind(), and in this case, mIRC would create the new hash table with all the matches.
It wouldn't need any change to the syntax and shouldn't cause any problem since having an hash table name consisting of number only isn't something one can really do: it wouldn't work with $hget().
It would let us doing:
noop $hfind(original_table,*a match*,new_table,w)
var %a 1
while ($hget(new_table,%a).item != $null) { echo -a $v1 : $hget(new_table,$v1) | inc %a }
if ($hget(new_table)) hfree $v1
That way it would also let you apply more than one match easily