Sign in to PrePAN

PrePAN provides a place
to discuss your modules.


Requests for Reviews Feed

File::TVShow::Info Extract meta data in TV Show File name

This is a TV Show only module which is aimed at giving extended support compared to Video::Filename.

I have looked around and not found a module similar. I currently use Video::Filename for File::TVShow::Organize

This module would be able support naming in for the forms of:

ShowName.SXXEXX.EpName.resolution.ext ShowName.YYYY.MM.DD.EpName.resolution.ext

It would also able to extract some of the other details in the file name.

One limit is that EpName MUST be directly after episode number

Bas-Man@github 2 comments

SQL::Tidy Beautifies SQL code

This is a module that beautifies SQL code.

talexb@github 0 comments

Dist-Zilla-Plugin-ReleaseToDarkpan Dist::Zilla plugin to release to a local "darkpan"

Sometimes we create a Perl module for our private use that we are not ready or not able to release to CPAN. The utility cpan-mirror-tiny lets us create a private CPAN repositoy on our local filesystem to store such packages we can then use in our own projects.

This plugin gives you the ability to automate this task when you run "dzil release". Use this plugin instead of UploadToCPAN.

lsiden@github 2 comments

App::PhotoDB App to manage a collection of film cameras & lenses

PhotoDB is an attempt to create a database for film photography that can be used to track cameras, lenses, accessories, films, negatives and prints, to fully catalogue a collection of photographic equipment as well as the pictures that are made with them. Read the CONCEPTS document for full details on the capabilities of PhotoDB.

PhotoDB can also write EXIF tags to scanned images taken with film cameras, so they appear in your digital photo library with the correct metadata (time, date, focal length, geotag, etc). At the moment, the PhotoDB project is unfinished and the code continues to change unpredictably. Look for a tagged release in the future!

The heart of PhotoDB is the MySQL/MariaDB backend database schema. This is the most complete part of the project and describes all the data that is recorded. The application is an interactive command-line tool to make it easier to add and edit data in the database. It is not a graphical interface or web application (but someone with the right enthusiasm and skills could use the logic I've already written to make a basic graphical interface quite quickly).

PhotoDB runs only on Linux systems and there are installation instructions for Fedora and Ubuntu Linux. However it should be able to run on pretty much any Linux distribution and MacOS as the Perl dependencies are portable. Soon there will be Docker support which will simplify installation and allow PhotoDB to run anywhere, including on Windows. The application is not quite feature-complete, so for now you may also need to edit parts of the database directly in some circumstances. You can access the raw database using the MySQL command line, by using an application such as MySQL Workbench or phpMyAdmin to obtain a GUI for manipulating the tables.

djjudas21@github 0 comments

Device::Yeelight Controller for Yeelight smart devices

Recently I discovered some smart light bulbs from Yeelight which have pretty well documented API, unfortunately there is no Perl module to control them (similar, however not compatible, module is Device::Hue).

This Perl module implements local device discovery via Yeeling specific SSDP protocol and sending commands via control protocol in the JSON format.

baierjan@github 0 comments

on::demand Postpone loading a module until it's actually used

Deferred loading of modules with large dependency footprint may improve test script and/or command-line tools load times.

Autoload is used. No performance penalty is imposed, aside from loading the module on the first call to it.

Of course, the drawback is that compile time errors (if any) are delayed until unexpected. Better check that the modules in question actually exist and load correctly.

dallaylaen@github 3 comments

File-TVShow-Organize Video file migration module to handle TV Shows.

I wrote this module in order for me automate my personal Video library rip and import work flow.

The idea being that dvds would be ripped into a staging folder. The files would be named according to Season and Episode format. The resulting file would then be moved into the correct show/season folder automatically. This is done as a cron job.

The module's role is to allow someone to create their own programs to to carry out these actions. Taking care of details such as matching show name to destination folder, create the required season folder if it does not exist and calling rsync to migrate the video file to its new home.


This module has been renamed and method names have been changed to snake_case

Bas-Man@github 3 comments

PostScript::PSjoin wrapper around the script for concatenating postscript documents

This module is a wrapper around the standalone Perl script "" by Tom Sato. All I did was the minimal set of changes to allow Tom's script to work as a Perl subroutine.

I just realized that the synopsis and description don't explain the handful of options; I'll add those.

n8ur@github 1 comment

Text::Parser Bare text parser, simplifies text parsing

Text::Parser is a bare-bones text parsing class. It is ignorant of the text format, and cannot recognize any grammars, but derived classes that inherit from it can specify this. They can do this usually by overriding just one of the methods in this class.

Future versions are expected to include progress-bar support, parsing text from sockets, or a chunk of memory. All these software features are text-format independent and can be re-used in parsing any text format. Derived classes of Text::Parser will be able to take advantage of these features.

balajirama@github 0 comments

Print::OrDie "or die $!" Wrappers for print-like core method with configurable die action

Simple wrappers for core print-like methods (print, say, printf). The goal is to avoid using "print or die" since autodie does not work with print.

The "die" action can be configured by importing use_"action". Where "action" can be croak (default), die, carp, cluck, and confess.

Every method has three wrappers (with o/e/at at the end of the names)

The "o" method writes on STDOUT, the "e" method writes to STDERR and the "at" writes to file handle. The "at" methods will require a block, which is anyways the recommended way (according to Perl Best Practices) of passing filehandles when using print-like methods.


use Print::OrDie qw(use_confess sayo saye sayat);

# It will 'confess' if there's some error.  
sayo 'FOOBAR'; # writes "FOOBAR\n" at STDOUT
saye 'FOOBAR'; # writes "FOOBAR\n" at STDERR
sayat {*STDERR} 'FOOBAR'; # same as before
sayat {$my_file_handle} 'FOOBAR'; # writes "FOOBAR\n" at given file handle


use Print::OrDie qw(use_confess sayat printfat);
use autodie;

# It will 'confess' if there's some error.  
open my $fh, '>', 'foobar.txt';
sayat {$fh} 'FOO';
close $fh;
$fh = undef;
printfat {$fh // *STDOUT} 'FOO %s', 'BAR';

Will write "FOO\n" on the 'foobar.txt' file and 'FOO BAR' on the console (STDOUT)


use autodie;
use File::Temp qw( tempfile );
use Print::OrDie qw( use_confess sayat sayo );

my ( $fh, $filename ) = tempfile();
close $fh;

print {$fh} q(); # It will not fail

sayat {$fh} q(); # It will fail

sayo 'finished'; # Will never execute

juliodcs@github 2 comments