A sub without a prototype (such as this constructor) always provides list context. Even if it had a prototype, prototypes are ignored when calling a sub as methods of a package or object. But even if they weren’t ignored, the prototype would limit you to a very specific list of arguments, and not the free-form key/value pairs that are popular for constructing objects. In general, assume list context for function arguments.
Perl’s “boolean” is exactly what you get from the result of the not operator, which is 1 for true, or a dualvar for false that evaluates as both empty string and as 0 depending how it gets used. I think its fair to refer to these as True and False in the context of perl. (and perhaps stockholm syndrome, but after using this for some years it starts to seem really unnecessary for other languages to have dedicated boolean constants, heh)