perl-Devel-EnforceEncapsulation - Find access violations to blessed objects

Property Value
Distribution Fedora 29
Repository Fedora i386
Package name perl-Devel-EnforceEncapsulation
Package version 0.51
Package release 13.fc29
Package architecture noarch
Package type rpm
Installed size 11.75 KB
Download size 16.96 KB
Official Mirror
Encapsulation is the practice of creating subroutines to access the properties
of a class instead of accessing those properties directly. The advantage of
good encapsulation is that the author is permitted to change the internal
implementation of a class without breaking its usage.
Object-oriented programming in Perl is most commonly implemented via blessed
hashes. This practice makes it easy for users of a class to violate
encapsulation by simply accessing the hash values directly. Although less
common, the same applies to classes implemented via blessed arrays, scalars,
filehandles, etc.
This module is a hack to block those direct accesses. If you try to access a
hash value of an object from its own class, or a superclass or subclass, all
goes well. If you try to access a hash value from any other package, an
exception is thrown. The same applies to the scalar value of a blessed scalar,
entry in a blessed array, etc.
To be clear: this class is NOT intended for strict enforcement of
encapsulation. If you want bullet-proof encapsulation, use inside-out objects
or the like. Instead, this module is intended to be a development or debugging
aid in catching places where direct access is used against classes implemented
as blessed hashes.
To repeat: the encapsulation enforced here is a hack and is easily
circumvented. Please use this module for good (finding bugs), not evil (making
life harder for downstream developers).


Package Version Architecture Repository
perl-Devel-EnforceEncapsulation-0.51-13.fc29.noarch.rpm 0.51 noarch Fedora
perl-Devel-EnforceEncapsulation - - -


Name Value
perl(:MODULE_COMPAT_5.28.0) -
perl(Carp) -
perl(English) -
perl(overload) -
perl(strict) -
perl(warnings) -


Name Value
perl(Devel::EnforceEncapsulation) = 0.51
perl-Devel-EnforceEncapsulation = 0.51-13.fc29


Type URL
Binary Package perl-Devel-EnforceEncapsulation-0.51-13.fc29.noarch.rpm
Source Package perl-Devel-EnforceEncapsulation-0.51-13.fc29.src.rpm

Install Howto

Install perl-Devel-EnforceEncapsulation rpm package:

# dnf install perl-Devel-EnforceEncapsulation




2018-07-13 - Fedora Release Engineering <> - 0.51-13
- Rebuilt for
2018-06-28 - Jitka Plesnikova <> - 0.51-12
- Perl 5.28 rebuild
2018-02-08 - Fedora Release Engineering <> - 0.51-11
- Rebuilt for
2017-07-27 - Fedora Release Engineering <> - 0.51-10
- Rebuilt for
2017-06-04 - Jitka Plesnikova <> - 0.51-9
- Perl 5.26 rebuild
2017-02-11 - Fedora Release Engineering <> - 0.51-8
- Rebuilt for

See Also

Package Description
perl-Devel-FastProf-0.08-29.fc29.i686.rpm Fast perl per-line profiler
perl-Devel-FindPerl-0.014-9.fc29.noarch.rpm Find the path to the current Perl interpreter
perl-Devel-Gladiator-0.07-8.fc29.i686.rpm Walk Perl's arena
perl-Devel-GlobalDestruction-0.14-7.fc29.noarch.rpm Expose PL_dirty, the flag that marks global destruction
perl-Devel-GlobalDestruction-XS-0.03-8.fc29.i686.rpm Faster implementation of the Devel::GlobalDestruction API
perl-Devel-GlobalPhase-0.003003-4.fc29.noarch.rpm Detect perl's global phase on older perls
perl-Devel-GoFaster-0.001-7.fc29.i686.rpm Optimise executable Perl ops
perl-Devel-Hexdump-0.02-15.fc29.i686.rpm Print nice hex dump of binary data
perl-Devel-Hide-0.0010-3.fc29.noarch.rpm Forces the unavailability of specified Perl modules (for testing)
perl-Devel-Leak-0.03-38.fc29.i686.rpm Utility for looking for perl objects that are not reclaimed
perl-Devel-LeakGuard-Object-0.08-9.fc29.noarch.rpm Scoped checks for object leaks
perl-Devel-LexAlias-0.05-18.fc29.i686.rpm Alias lexical variables
perl-Devel-NYTProf-6.06-3.fc29.i686.rpm Powerful feature-rich perl source code profiler
perl-Devel-OverloadInfo-0.005-4.fc29.noarch.rpm Introspect overloaded operators
perl-Devel-OverrideGlobalRequire-0.001-7.fc29.noarch.rpm Override CORE::GLOBAL::require safely