goto has its uses, but while often saves several lines of code. For example, if he wanted to give points only to 'regular' users who don't have op/voice status, he'd be looping throught $nick($chan,0,r)

But sometimes there are zero of these, so instead of checking to make sure there's at least 1 nick to act against, you can use WHILE, which not only quits when you've processed everyone, but also lets you avoid processing when there's nobody on the list.