that is true, but the IAL should contain information about the user who just caused an event.
Just to clarify:
IRC line:
:op!ident@address.com MODE #channel +v nick$address = ident@address.com,
$chan = channel,
$1- (on RAWMODE) = +v nick.
mIRC display:
* op sets mode +v nick$nick = op,
$vnick = nick.
As you see above, events fill IAL with the address of who
performs a command (the
op,
$nick), not anyone else whose status is altered by him/her (the
voiced/devoiced one,
$vnick), simply because the server doesn't pass this info. So, you may not always have $vnick's address unless you did proper checking for it before.
P.S.: Sorry, I misread the post (it seems I should sleep) and realized that the code you've shown couldn't clear the whole userlist, but decided to leave the explanation above anyway.