$hget(name) isn't suited for mass searching/listing, but $hget(N) is. All you need to do is loop through $hget(N) to get the name of the Nth hash table and use the .size property to get its size. Here's a scripted /hlist:
Code:
alias hlist {
  var %i = 1, %a
  if $1 != -w || $0 == 1 {
    echo -aiec info * Showing all hash tables
    while $hget(%i) { 
      echo -ac info2 $ifmatch - $hget($ifmatch).size
      inc %i 
    }
    goto end
  }
  echo -aiec info * Showing hash tables matching: $2 - size: $3
  if $3 !isnum 1- {
    while $hget(%i) {
      %a = $ifmatch
      if $2 iswm %a { echo -ac info2 %a - $hget(%a).size }
      inc %i 
    }
    goto end
  } 
  while $hget(%i) {
    %a = $ifmatch
    if $3 == $hget(%a).size && $2 iswm %a { echo -ac info2 %a - $3 }
    inc %i
  }
  :end
  echo -aiec info * End of matching hash tables list
}
I'm not sure whether you want /hlist to do a wildcard search or an "isin" one; the -w switch implies "wildcard", but your example uses the "isin" method, ie /hlist checks if the 2nd parameter is included in a hash table name. I chose the first way, ie wildcards. This means that to list all hash tables of size 100 that contain hash_conf, you should type
/hlist -w *hash_conf* 100
and not
/hlist -w hash_conf 100
If you don't want the "wildcard" search, just change every occurance of iswm to isin.


/.timerQ 1 0 echo /.timerQ 1 0 $timer(Q).com