in reply to 'reflection', aka traversing symbol tables

my $version = ${"${class}::CVS_VERSION"} || next;

That's a bit more standard, and it's clearer what you mean ( what's in $class follwed by "::CVS_VERSION" rather than $class::CVS_VERSION) than just backwhacking the colon.