Sign in to PrePAN

PrePAN provides a place
to discuss your modules.


Requests for Reviews Feed

App::Comment2pod generate pod documentation from comments above functions and package name

I have the started on a little utility which hopefully would increase the amount and quality of documentation in my perlscript and modules.

I did not find anything like this on CPAN, so I put this out here in case this might be handy for someone else.

It is probably more work to be done before this is ready for CPAN (like the name of the module), but I would love some feedback.

The current package contains a script, which could be used as:

cat | comment2doc

The result is written to stdout, so is useful to pipe the result into various utils, i.e

  • pod2man | man -l - see man page
  • pod2markdown
  • podselect

This util will be a nice starting point for further documentation.

The package also comes with a Dist::Zilla plugin

kjellkvinge@github 0 comments

Interact::Later Delay some tasks for later by dumping their data to disk

Can be used, for example, when you receive lots of POST requests that you don't want to proceed right now to save database load.

This module will fastly store the data content on disk (with Storable) without the need to use a database or a job queue. Assuming that Perl is fast at writing files to disk, we can hope good results. This is an experiment...

smonff@github 3 comments

PartialApplication A small module that handle partially applying parameters to functions

PartialApplilcation is a small module to handle partially applying parameters to functions - a common technique used in the functional programming style of coding.


partiallyApply( \&function, @parameters )

Partially applies the parameters to the function, giving a new function reference.

To partially apply parameters to an object method, pass a function reference to the method as the first parameter, the object instance as the second, followed by the parameters to be partially applied.

my $object = Class->new();

my $partiallyAppliedMethod = partiallyApply( \&Class::method, $object, 1, 2, 3 );

$partiallyAppliedMethod->(4, 5, 6);   # equivilant of $object->method(1, 2, 3, 4, 5, 6)


A function reference to the partially applied function.

partiallyApplyRight( \&function, @parameters )

Partially applies the parameters to the end of the function call - useful for when you're using named parameters and you want to make sure that the partially applied parameters are the ones used.

sub testSub {
    my %params = @_;

    print "$_ - $params{$_}\n" for keys %params;

my $partiallyAppliedFunction = partiallyApplyRight( \&testSub, asdf => 99 );

$partiallyAppliedFunction->(asdf => 100);   # outputs: asdf - 99


A function reference to the partially applied function.

partiallyApplyN( \&function, \@parameterBitmap, @parameters )

Partially applies the parameters based upon the parameterBitmap. An entry of 1 in the parameterBitmap will use a partially applied parameter and an entry of 0 will use a parameter from the call.

sub testSub {
    print join(", ", @_) ."\n";

my $partiallyAppliedFunction = partiallyApplyN( \&testSub, [ 1, 0, 1, 0 ], 1, 2, 3, 4, 5 );

$partiallyAppliedFunction->('a', 'b', 'c', 'd'); # outputs: 1, a, 2, b, 3, 4, 5, c, d

This does allow you to partially apply parameter to a method call without specifying the object instance to apply it to multiple instances.

my $partiallyAppliedMethod2 = partiallyApplyN( \&Class::method, [ 0, 1, 1, 1 ], 1, 2, 3 );

$partiallyAppliedMethod2->($object1, 4, 5); # equivilant to $object1->method(1, 2, 3, 4, 5)
$partiallyAppliedMethod2->($object2, 6, 7); # equivilant to $object2->method(1, 2, 3, 6, 7)


A function reference to the partially applied function.

jlcooper@github 2 comments

SMS::Send::RedSMS SMS::Send driver to send messages via

SMS::Send driver for RedSMS -

This is not intended to be used directly, but instead called by SMS::Send (see synopsis above for a basic illustration, and see SMS::Send's documentation for further information).

The driver uses the RedSMS HTTP API mechanism ( version) with JSON.

Be aware! The driver is intended only for (not version of API.

artamonoviv@github 0 comments

App::uricolor Colorize URIs in terminal with ANSI colors.

uricolor is a trivial script to colorize URIs with ANSI colors (underlined blue), based on URI::Find and Term::ANSIColor. It simply reads from STDIN and writes to STDOUT.

Useful in combination with urifind (provided by URI::Find).

kal247@github 0 comments

AtlasTK::GUI Add a graphical user interface to your Perl programs.

  • For a live demonstration of above example:
  • for other live demonstrations:

The Atlas toolkit ( purpose is to provide a fast and easy way to add a graphical interface to programs. This toolkit is available for Java, Node.js, PHP, Python, Ruby, and, now, also for Perl. It's lightweight, does not need other Perl modules, and requires only basic knowledge of widespread and easy-to-learn web technologies (no JavaScript required).

It can be easily used in programs that were not originally designed to have a GUI, so the user can choose which interface s/he wants to use. The Atlas toolkit also facilitates the development of prototypes, and can also easily be used by beginners.

epeios-q37@github 3 comments

Template::Plugin::Filter::PlantUML A template toolkit plugin filter for encoding and processing PlantUML Diagrams

This is a trivial Template::Toolkit plugin filter to allow any template writer to embed PlantUML Diagram Syntax in Templates and have them encoded and processed via any PlantUML Server in any supported formats.

It uses WWW:PlantUML remote client under the hood.

The author got his inspiration from XSAWYERX's Template::Plugin::xkcd

ranwitter@github 0 comments

WWW::PlantUML A simple remote client interface to a PlantUML server

  • Plantuml is a library for generating UML diagrams from a simple text markup language.

  • This is a simple Perl remote client interface to a plantuml server using the same custom encoding used by most other plantuml clients. Perl was missing from the list.

  • There are other plantuml Perl libraries, like PlantUML::ClassDiagram::Parse, which provide only parsing capabilities for Class Diagrams. In contrast WWW::PlantUML module provides accessing any UML Diagram Type in various formats supported by any PlantUML server via HTTP/S Protocol.

  • This client defaults to the public plantuml server, but can be used against any server.

  • Read more:

  • See also: UML::PlantUML::Encoder

ranwitter@github 0 comments

UML::PlantUML::Encoder Provides PlantUML Language Encoding

  • Plantuml is a library for generating UML diagrams from a simple text markup language.

  • PlantUML defines a standardized way to encode diagram text description to a simple string of characters that contains only digits, letters, underscore and minus character.

  • The goal of such an encoding is to facilitate communication of diagrams through URL (see

  • This encoding includes compression to keep encoded strings as short as possible.

  • Compression is done using Deflate algorithm.

  • Code in PHP, Javascript, Python were readily available on various sources. Perl 5 was missing from the list.

  • Read more: PlantUML Text Encoding

ranwitter@github 5 comments

Astro::Montenbruck Library of astronomical calculations, based on "Astronomy On The Personal Computer" by O.Montenbruck and T.Phleger

This was formerly posted as "AstroScript". Following the recommendations of djerius@github, I separated the astronomical code into an independent library, named after one of the authors of algorithms, Oliver Montenbruck, and placed it into Astro:: namespace.

The main purpose is to calculate positions of the Sun, the Moon, and the planets with precision that is approximately the same as that found in astronomical yearbooks. Other modules contain time-related routines, coordinates conversions, calculation of the ecliptic obliquity and nutation, etc. Over time, the range of utility functions will grow.

Partially it overlaps some code which already exists in CPAN and elsewhere. For instance, there is a Perl wrapper for Swiss Ephemeris. Swiss Ephemeris is fast and precise C library. Unfortunately, it lacks portability and convenient license.

The present library is an attempt to find a middle-ground between precision on the one hand and compact, well organized code on the other. I tried to follow the best practices of modern Perl programming.

skrushinsky@github 1 comment