(Disclaimer: My purpose in proposing this is not to recommend it, but to document whether the idea should be endorsed, or shot down, and any proposed canonical syntax. Note that the later implications of these choices are quite substantial. Please discuss!)
[Draft Proposal: Declaring Classwide Attributes] Within a class, "classwide attributes" are declared using the standard "my" and "our". Example: class Zap { my %zap_cache; # a private classwide attribute our $zap_count = 0; # a public classwide attribute attr $foo; attr $bar; } [Discussion] Many OO-based languages have the concept of "classwide" attributes; that is, attributes that only exist once, for the class (and all subclasses?), as opposed to existing one for each instance of a class. You can use these attributes as counters, or caches, or any other common ground for use by all instances of the class. Within a class definition, Perl simply uses the my/our keywords for this purpose. If any value is to be assigned to a "classwide" attributes, that assignment is done once, upon initialization of the class. [PROS] - Obvious utility. No new syntax introduced. [CONS] - ? [Related Issues, Known Implications] - This hinges on our definitions of "private" and "public". "my" vs. "our" may in fact mean "private" vs. "protected", or perhaps "protected" vs. "public". - What the heck does "initialization of the class" really mean? That needs to be clearer. MikeL