a hash table would probably be faster than reading each line from a file but i dont know how much of a difference it would make unless you have a whole lot of bans. other than that just keeping it as short as possible like..

Code:
ON *:JOIN:#blah:{
  var %tmp = $hget(banlist,0).items
  var %addr = $address($nick,5)
  while (%tmp) {
    if ($hget(banlist,%tmp).data iswm %addr) {
      ban # $nick 4 | kick # $nick banned
    }
    dec %tmp
  }
}
I didn't test that but it should work if you had a hash table where you saved entrys in numbered order like ' /hadd banlist 1 *!*@*.blah.com '