Sign in to PrePAN

PrePAN provides a place
to discuss your modules.


Requests for Reviews Feed

Net::Amazon::SQS AWS SQS API Version 2012-11-05 Full Implementation

I would like to get started on a new client for SQS implementing the full 2012-11-05 API and some nice helpers like sending sockets to SQS.

I have looked at AWS::SQS and Amazon:SQS::Simple. Both seem not to implement to Full api. Also focus is on queue names or single queue preset in object blessing. The internals seem a little messy in notation. Probably a reusable object for signing is missing (similar in intention to Net::Amazon::Signature::V4).

Also Amazon::SQS::Producer and ::Consumer exist. These seem to be queue oriented as opposed to full management and multi-queue oriented.

No current module have batch functions and documentation is scarce and has no references to the API.

In addition Net::Amazon:: or Webservice::Amazon seems like the name space to go! Finally casing of methods seems a little annoying in some of the modules.

Does a third module seems like too much?

Thanks in advance for the comments, Gonzalo

gbarco@github 2 comments

Net::Eksisozluk Grabs entries and lists of entries from

This module provides a simple command line interface for eksisozluk, which is a user-based web dictionary, a famous web site in Turkey since 1999. You can get "debe" list (list of most voted entries from yesterday) by using this module as noted below.

my @entries_array=get_current_debe();

This will return the entry id's of the online debe list. Element at index 0 will be a dummy -1, element at 1 is the first entry, 2 is second and so on.

You can also get details of an entry by only giving the entry id.

my $id=1;
my %entry=get_entry_by_id($id);

This will return a hash with the values below.

'id' is the id of the entry. it was already given by the user.
'id_link' is the direct link to the entry.
'id_ref' is the id of the reference entry. reference entry is the first entry of the day in the same topic. it might be equal to id.
'date_accessed' will show the date-time of the script running.

'is_found' will show whether entry is found or not. will return 0 if entry is deleted, or not written yet.

'topic' is the topic of the entry.
'topic_link' is the link of the topic. can be used for search.
'number_in_topic' is the order of the entry in the topic.

'date_published' is the date-time entry is first published.
'is_modified' will show if the entry is modified or not.
'date_modified' is the date entry is modified. if it is not modified, will return 0.
'date_print' is the human readable date that can be used to print.

'author' is the username who wrote the entry.
'body_raw' is the raw entry, as downloaded from eksisozluk directly.
'body' is the edited entry, several fixes is applied to the raw.
'fav_count' is the number that shows the time that entry is marked as favourite.

kyzn@github 2 comments

Imager::LineTrace Line tracer

Tracing clockwise from left top.

Basic Overview

my $img = Imager::LineTrace->new( file => $path ) or die Imager->errstr;

# Trace black line on white.
my $figures_ref = $img->line_trace();

# If you want to trace counter-clockwise from left bottom.
$img->filp( dir => 'v' );
my $figures_ref = $img->line_trace();

# If you want to select color. ( 0:R, 1:G, 2:B, 3:Alpha )
my $figures_ref = $img->line_trace( channels => [0] );

# Or you want to trace with R,G and B.(this is defalt.)
my $figures_ref = $img->line_trace( channels => [0,1,2] );

# If you want to trace not black color.
my $figures_ref = $img->line_trace( ignore => 0 );

# If you want to trace many figure. (default "limit" is 1024)
my $figures_ref = $img->line_trace( limit => 10000 );

techno-cat@github 3 comments

WWW::Query::UrbanDictionary Query UrbanDictionary's JSON API

My first perl module.

Grabs definitions and other data from's JSON API.

Any feedback would be greatly appreciated.

woodruffw@github 4 comments

Module::Extract::Install Install missing modules explicitly loaded by a Perl script or module

Extract the names of the modules explicitly loaded in a Perl script or module and install them if they are not already installed. Since this module relies on Module::Extract::Use, it has the same caveats regarding identifying loaded modules. Therefore, modules that are loaded dynamically (e.g., eval "require $class") will not be installed.

Command-line usage is possible with cpanm-missing and cpanm-missing-deep, scripts that are installed along with this module.

  • new

    Initializes a new Module::Extract::Install object.

  • check_modules( FILES )

    Analyzes FILES to generate a list of modules explicitly loaded in FILES and identifies which are not currently installed. Subsequent calls of this method will continue adding to the lists of modules that are not installed (or already installed).

  • check_modules_deep( DIRECTORY, PATTERN )

    Traverses a DIRECTORY and runs check_modules() on files that match PATTERN, a case-insensitive regular expression. If omitted, PATTERN defaults to ^.+\.p[lm]$ and matches files ending in .pl or .pm. Subsequent calls of this method will continue adding to the lists of modules that are not installed (or already installed).

  • cpanm

    Use cpanm to install loaded modules that are not currently installed.

  • not_installed

    Returns an alphabetical list of unique modules that were explicitly loaded, but need to be installed. Modules are removed from this list upon installation.

  • previously_installed

    Returns an alphabetical list of unique installed modules that were explicitly loaded.

  • newly_installed

    Returns an alphabetical list of unique modules that were explicitly loaded, needed to be installed, and were successfully installed.

  • failed_install

    Returns an alphabetical list of unique modules that were explicitly loaded and needed to be installed, but whose installation failed.

mfcovington@github 5 comments

Menu::Builder Helper module to create hierarchies of cascading menus in Perl Tk

This is a tool for quickly and easily building multi-level Menu Systems, such as, but not limited to, a menubar. The main focus is commands and cascades. Other menu entry types are also supported.

(Although -menuitems, in Tk::Menu:Item, provides similar functionality, building cascade menus can get very complicated. This tool simplifies that, as well as simple commands, while providing means to describe other menu item types and full options for commands.)

Additional details in the pod file.

Note 1: This module does not export any methods or other symbols. This is by design.

Note 2: Already attempting to contact the maintainers of Perl Tk per instructions in Tk::Contrib

ronww@github 0 comments

Rum Node and libuv port to pure perl

Nodejs and libuv port to pure perl

  • Porting libuv to pure perl - see (Rum::Loop)

  • Porting Node core modules - (net, child_process, http, fs ...)

  • Using perl core modules only

  • Most of the code translated directly from libuv and nodejs

Full Nodejs API

Currently Rum support ~ 75% of nodejs API

mamod@github 0 comments

App::Pluggable Tiny module that does git-like subcommands

Not sure whether this has been done before. The idea is to shift @ARGV, concatenate that string with $0, and attempt to exec the result.

This is "git-like" because that's what git does:

git foo => git-foo

This could therefore be nested to arbitrary depths just by having a bunch of scripts that all use App::Pluggable

git foo bar => git-foo bar => git-foo-bar

By using require rather than use, each script has the option of not actually doing that until it's handled special cases:

git --help
git foo --help

I found Task::Pluggable but it has less documentation than this post is long so I don't really know what it does. Is this a solved problem? Is it worth solving?

Altreus@github 0 comments Dictionary Generator version 3.0 beta


Dictionary generator version 3.0

Made by lucaspc - 2014

use Modern::Perl '2014'; use autodie;

use utf8;

binmode STDOUT, ':utf8';

read file and put the content in array

sub read_file {

my $filename = shift;

open my $fh, ";
chomp (@content);
close $fh;
return \@content;


filter words removing symbols and whitespaces

sub word_filter {

my $content = shift;
my @filter;
foreach ( @$content ) {
    $_ = lc;

    my @words = split /\W/, $_;
    push @filter, @words;       

my %register;
@filter = grep { !$register{$_}++ } @filter;
@filter = sort @filter;
return \@filter;


show words in 4-columns-format and the number of words

sub show_words {

my $filter = shift;
my $num_words = scalar @$filter;
my $max = 0;
map{ $max = length if (length > $max) }@$filter;    
my $count = 0;
$max+= 2;

foreach (@$filter){
    my $size = $max - length;
    printf "%s%${size}s",$_, ""; 

    say "" unless ($count % 4);

say "";
say "-" x ($max * 4);
say "Number of words: $num_words";


write in the dictionary verifying if the words of the text already are in

sub write_dictionary{

my $filter = shift;

unless ( -e "dictionary.txt" ){

    open my $fh, ">", "dictionary.txt";
    close $fh;


my $dictionary = read_file("dictionary.txt");       

my %newones;
foreach (@$filter){
    my $word = $_;
    my @found = grep (/\b$word\b/, @$dictionary); 

    unless (@found){

        print "Insert definition of $_: [$_] ";
        chomp (my $input =  );
        $input = $_ if $input !~ m/\w+/;

        $newones{$_} = $input;


open my $fh,">>", "dictionary.txt";
seek($fh, 0, "SEEK_END");
foreach (keys %newones) {

    print $fh "$_:$newones{$_}\n";

close $fh;          
return 1;


translate any text using dictionary file as reference

sub translate_text { my $dictionary = shift; my $translate = shift; my $text = shift;

my $original = read_file($text);
my $words = read_file($dictionary);

my %dic;

foreach (@$words){

    my ($key, $value) = split /:/, $_;

    $dic{$key} = $value;    

my @readable;   
foreach my $phrase ( @$original) {

    foreach (keys %dic){

        $phrase =~ s/\b$_\b/$dic{$_}/gi;
    push @readable, $phrase;

open my $fh, ">", $translate;

foreach (@readable) {

    say $fh $_;

close $fh;

return 1; }

my $file = read_file("text.txt"); my $filter = word_filter($file); show_words($filter); write_dictionary($filter); translate_text("dictionary.txt", "translate_text.txt", "text.txt");

lucaspc@github 0 comments

Parse::License Decodes AAMVA Data

Decodes the magnetic stripe data from American Association of Motor Vehicle Administrators (AAMVA) formatted Driver's Licenses. This is the format used by all 50 US States, the Canadian provinces, and some Mexican states.

curtevans@github 4 comments