Right now, when a NetHack::Item is constructed, it parses the description and manually reblesses the instance into the appropriate class. This breaks subclassing, which makes extending NetHack::Item really hard (TAEB has to do a lot of weird reblessing of its own to work around this). If NetHack::Item just did a role application to $self instead, then $self could be any subclass too, and that would continue to work.
Right now, when a
NetHack::Itemis constructed, it parses the description and manually reblesses the instance into the appropriate class. This breaks subclassing, which makes extending NetHack::Item really hard (TAEB has to do a lot of weird reblessing of its own to work around this). If NetHack::Item just did a role application to$selfinstead, then$selfcould be any subclass too, and that would continue to work.