$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:
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.