in reply to Smart matching for argument constraints
Personally I'd make the intent a little more obvious:
warn "wrong argument" if ref $arg{x} || !($arg{x} ~~ [qw/a b c/]); [download]