in reply to using Getopt::Long, arguments and no arguments possible?

Works fine for me. (Getopt::Long v2.25)
does @adduser = () --adduser does @adduser = ('') --adduser Joe does @adduser = ('Joe') --adduser Joe --adduser Frank does @adduser = ('Joe', 'Frank') --adduser --adduser Joe does @adduser = ('', 'Joe')

It even works find with your join-split (which would be better written as @adduser = map { split /,/ } @adduser;).