Robert Schweikert's avatar

Robert Schweikert

rjschwei

Involved Projects and Packages

This is a simple developer's tool for finding circular references in
objects and other types of references. Because of Perl's reference-count
based memory management, circular references will cause memory leaks.

This module provides a way to obtain filesystem disk space information.
This is a Unix only distribution. If you want to gather this information
for Unix and Windows, use Filesys::DfPortable. The only major benefit of
using Filesys::Df over Filesys::DfPortable, is that Filesys::Df supports
the use of open filehandles as arguments.

Hook::LexWrap allows you to install a pre- or post-wrapper (or both) around
an existing subroutine. Unlike other modules that provide this capacity
(e.g. Hook::PreAndPost and Hook::WrapSub), Hook::LexWrap implements
wrappers in such a way that the standard caller function works correctly
within the wrapped subroutine.

PadWalker is a module which allows you to inspect (and even change!)
lexical variables in any subroutine which called you. It will only show
those variables which are in scope at the point of the call.

PadWalker is particularly useful for debugging. It's even used by Perl's
built-in debugger. (It can also be used for evil, of course.)

I wouldn't recommend using PadWalker directly in production code, but it's
your call. Some of the modules that use PadWalker internally are certainly
safe for and useful in production.

Perl::Critic is an extensible framework for creating and applying coding
standards to Perl source code. Essentially, it is a static source code
analysis engine. Perl::Critic is distributed with a number of
Perl::Critic::Policy modules that attempt to enforce various coding
guidelines. Most Policy modules are based on Damian Conway's book *Perl
Best Practices*. However, Perl::Critic is *not* limited to PBP and will
even support Policies that contradict Conway. You can enable, disable, and
customize those Polices through the Perl::Critic interface. You can also
create new Policy modules that suit your own tastes.

For a command-line interface to Perl::Critic, see the documentation for
perlcritic. If you want to integrate Perl::Critic with your build process,
Test::Perl::Critic provides an interface that is suitable for test
programs. Also, Test::Perl::Critic::Progressive is useful for gradually
applying coding standards to legacy code. For the ultimate convenience (at
the expense of some flexibility) see the criticism pragma.

Win32 and ActivePerl users can find PPM distributions of Perl::Critic at
the http://theoryx5.uwinnipeg.ca/ppms/ manpage and Alexandr Ciornii's
downloadable executable at the http://chorny.net/perl/perlcritic.html
manpage.

If you'd like to try Perl::Critic without installing anything, there is a
web-service available at the http://perlcritic.com manpage. The web-service
does not yet support all the configuration features that are available in
the native Perl::Critic API, but it should give you a good idea of what it
does. You can also invoke the perlcritic web-service from the command-line
by doing an HTTP-post, such as one of these:

$> POST http://perlcritic.com/perl/critic.pl < MyModule.pm
$> lwp-request -m POST http://perlcritic.com/perl/critic.pl < MyModule.pm
$> wget -q -O - --post-file=MyModule.pm http://perlcritic.com/perl/critic.pl

Please note that the perlcritic web-service is still alpha code. The URL
and interface to the service are subject to change.

Also, the Perl Development Kit (PDK 8.0) from ActiveState includes a very
slick graphical interface to Perl-Critic. For details, go to the
http://www.activestate.com/perl_dev_kit manpage

Bugowner

This is the PPI manual. It describes its reason for existing, its
general structure, its use, an overview of the API, and provides a few
implementation samples.

Readonly.pm provides a facility for creating non-modifiable scalars,
arrays, and hashes.

String::Format lets you define arbitrary printf-like format sequences to be
expanded. This module would be most useful in configuration files and
reporting tools, where the results of a query need to be formatted in a
particular way. It was inspired by mutt's index_format and related
directives
(see ).

One recurring problem in modules that use Scalar::Util's "weaken"
function is that it is not present in the pure-perl variant.

While this isn't necesarily always a problem in a straight CPAN-based
Perl environment, some operating system distributions only include the
pure-Perl versions, don't include the XS version, and so weaken is then
"missing" from the platform, despite passing a dependency on
Scalar::Util successfully.

For many APIs with large numbers of classes, it can be very useful to be
able to do a quick once-over to make sure that classes, methods, and
inheritance is correct, before doing more comprehensive testing. This
module aims to provide such a capability.

Perl's garbage collection has one big problem: Circular references can't
get cleaned up. A circular reference can be as simple as two reference
that refer to each other.

Test::Memory::Cycle is built on top of Devel::Cycle to give you an easy
way to check for these circular references.

In situations where you have deep trees of classes, there is a common
situation in which you test a module 4 or 5 subclasses down, which should
follow the correct behaviour of not just the subclass, but of all the
parent classes.

This should be done to ensure that the implementation of a subclass has not
somehow "broken" the object's behaviour in a more general sense.

'Test::Object' is a testing package designed to allow you to easily test
what you believe is a valid object against the expected behaviour of *all*
of the classes in its inheritance tree in one single call.

To do this, you "register" tests (in the form of CODE or function
references) with 'Test::Object', with each test associated with a
particular class.

When you call 'object_ok' in your test script, 'Test::Object' will check
the object against all registered tests. For each class that your object
responds to '$object->isa($class)' for, the appropriate testing function
will be called.

Doing it this way allows adapter objects and other things that respond to
'isa' differently that the default to still be tested against the classes
that it is advertising itself as correctly.

This also means that more than one test might be "counted" for each call to
'object_ok'. You should account for this correctly in your expected test
count.

There are a number of different situations (like testing caching code)
where you want to want to do a number of tests, and then verify that some
underlying subroutine deep within the code was called a specific number of
times.

This module provides a number of functions for doing testing in this way in
association with your normal the Test::More manpage (or similar) test
scripts.

Euca2ools are command-line tools for interacting with Web services that export a REST/Query-based API compatible with Amazon EC2 and S3 services.The tools can be used with both Amazon's services and with installations of the Eucalyptus open-source cloud-computing infrastructure.

'B::Keywords' supplies seven arrays of keywords: '@Scalars', '@Arrays',
'@Hashes', '@Filehandles', '@Symbols', '@Functions', and '@Barewords'. The
'@Symbols' array includes the contents of each of '@Scalars', '@Arrays',
'@Hashes', '@Functions' and '@Filehandles'. Similarly, '@Barewords' adds a
few non-function keywords and operators to the '@Functions' array.

All additions and modifications are welcome.

This is a simple developer's tool for finding circular references in
objects and other types of references. Because of Perl's reference-count
based memory management, circular references will cause memory leaks.

This module provides a way to obtain filesystem disk space information.
This is a Unix only distribution. If you want to gather this information
for Unix and Windows, use Filesys::DfPortable. The only major benefit of
using Filesys::Df over Filesys::DfPortable, is that Filesys::Df supports
the use of open filehandles as arguments.

Hook::LexWrap allows you to install a pre- or post-wrapper (or both) around
an existing subroutine. Unlike other modules that provide this capacity
(e.g. Hook::PreAndPost and Hook::WrapSub), Hook::LexWrap implements
wrappers in such a way that the standard caller function works correctly
within the wrapped subroutine.

PadWalker is a module which allows you to inspect (and even change!)
lexical variables in any subroutine which called you. It will only show
those variables which are in scope at the point of the call.

PadWalker is particularly useful for debugging. It's even used by Perl's
built-in debugger. (It can also be used for evil, of course.)

I wouldn't recommend using PadWalker directly in production code, but it's
your call. Some of the modules that use PadWalker internally are certainly
safe for and useful in production.

Perl::Critic is an extensible framework for creating and applying coding
standards to Perl source code. Essentially, it is a static source code
analysis engine. Perl::Critic is distributed with a number of
Perl::Critic::Policy modules that attempt to enforce various coding
guidelines. Most Policy modules are based on Damian Conway's book *Perl
Best Practices*. However, Perl::Critic is *not* limited to PBP and will
even support Policies that contradict Conway. You can enable, disable, and
customize those Polices through the Perl::Critic interface. You can also
create new Policy modules that suit your own tastes.

For a command-line interface to Perl::Critic, see the documentation for
perlcritic. If you want to integrate Perl::Critic with your build process,
Test::Perl::Critic provides an interface that is suitable for test
programs. Also, Test::Perl::Critic::Progressive is useful for gradually
applying coding standards to legacy code. For the ultimate convenience (at
the expense of some flexibility) see the criticism pragma.

Win32 and ActivePerl users can find PPM distributions of Perl::Critic at
the http://theoryx5.uwinnipeg.ca/ppms/ manpage and Alexandr Ciornii's
downloadable executable at the http://chorny.net/perl/perlcritic.html
manpage.

If you'd like to try Perl::Critic without installing anything, there is a
web-service available at the http://perlcritic.com manpage. The web-service
does not yet support all the configuration features that are available in
the native Perl::Critic API, but it should give you a good idea of what it
does. You can also invoke the perlcritic web-service from the command-line
by doing an HTTP-post, such as one of these:

$> POST http://perlcritic.com/perl/critic.pl < MyModule.pm
$> lwp-request -m POST http://perlcritic.com/perl/critic.pl < MyModule.pm
$> wget -q -O - --post-file=MyModule.pm http://perlcritic.com/perl/critic.pl

Please note that the perlcritic web-service is still alpha code. The URL
and interface to the service are subject to change.

Also, the Perl Development Kit (PDK 8.0) from ActiveState includes a very
slick graphical interface to Perl-Critic. For details, go to the
http://www.activestate.com/perl_dev_kit manpage

Bugowner

This is the PPI manual. It describes its reason for existing, its
general structure, its use, an overview of the API, and provides a few
implementation samples.

Readonly.pm provides a facility for creating non-modifiable scalars,
arrays, and hashes.

String::Format lets you define arbitrary printf-like format sequences to be
expanded. This module would be most useful in configuration files and
reporting tools, where the results of a query need to be formatted in a
particular way. It was inspired by mutt's index_format and related
directives
(see ).

One recurring problem in modules that use Scalar::Util's "weaken"
function is that it is not present in the pure-perl variant.

While this isn't necesarily always a problem in a straight CPAN-based
Perl environment, some operating system distributions only include the
pure-Perl versions, don't include the XS version, and so weaken is then
"missing" from the platform, despite passing a dependency on
Scalar::Util successfully.

For many APIs with large numbers of classes, it can be very useful to be
able to do a quick once-over to make sure that classes, methods, and
inheritance is correct, before doing more comprehensive testing. This
module aims to provide such a capability.

3089 contributions in the last year
Mon                                                                                                          
Tue                                                                                                          
Wed                                                                                                          
Thu                                                                                                          
Fri                                                                                                          
Sat                                                                                                          
Sun                                                                                                        
Contributions on 2024-05-29
4 commits
openSUSE Build Service is sponsored by