Sign in to PrePAN

PrePAN provides a place
to discuss your modules.


Requests for Reviews Feed

Unicode::Confuse Deal with confusable unicode characters

Parser/interface to

Probably would parse the above file into JSON, and distribute the JSON file with it.

benkasminbullock@github 0 comments

CSS::Parser::Regexp a regexp-based CSS parser with at-rule support

A regexp-based CSS parser with at-rule support

Key features:

  • only core dependencies
  • support for nested at-rules
  • tree and list structure output
  • stringification (and as a consequence, de-obfuscation)
  • tested against bootstrap.css, normalize.css, pure.css

I'd welcome feedback and comments. I'm especially interested to know if this group feels it's good enough to upload to CPAN, and if there is a better name I should use (see briandfoy's comment here

simonecesano@github 2 comments

Lingua::StarDict::Writer A module that allows to create a StarDict dictionary

StarDict is a popular dictionary format, supported by many dictionary and book reading programs.

StarDict entry may consist of several parts of various text or media types.

This module allows to create a new StarDict dictionary with entries consisting of parts of arbitrary types.

nataraj-hates-MS-for-stealing-github@github 12 comments

Net::OBS::Client simple OBS API calls

Net::OBS::Client aims to simplify usage of OBS ( API calls in perl.

M0ses@github 0 comments

BookBot Collates text files into a single file

Asking for wisdom on whether or not an application should go on CPAN. I write science fiction, and keep each scene in a text file. BookBot collates the files into one larger file, and inserts section break markers that can be replaced with page breaks in LibreOffice. Future state includes LaTeX output, grade level reporting, and repeated word counts.

Is that something anyone besides me finds useful?

LeamHall@github 4 comments

Finance::IG Module gor using IG Markets REST API.

The sample code lists your positions and prints them out in a 1 line per position format.

Transactions and accounts can be listed in a similar way.

This code is at an early stage and should serve as a framework for further additions.

I invite anyone who has an IG account and uses the REST API with an api key to try it and advise how you get on.

TheDoktar@github 0 comments

Promise::Syntax async/await comprehension syntax in pure perl

This is a 'bicycle' i use for some time in my system tests.

allter@github 4 comments

Log::CJournald C-Style Journald access

Journald access c-style. Provides structured logging via sendv, log opening, seeking + retrieval.

devcon2012@github 0 comments

Text::Transform transform and recover interface for text processing

This module is currently included in Text::VisualPrintf distribution as Text::VisualPrintf::Transform, and I'm planning to release it as an individual module.

Library using Text::VisualPrintf::Transform

Application using Text::VisualPrintf::Transform

Application using Text::ANSI::Printf intensively


This is a general interface to transform text data into desirable form, and recover the result after the process.

For example, Text::Tabs does not take care of Asian wide characters to calculate string width. So the next program does not work as we wish.

use Text::Tabs;
print expand <>;

In this case, make transform object with length function which understand wide-character width, and the pattern of string to be replaced.

use Text::VisualPrintf::Transform;
use Text::VisualWidth::PP;
my $xform = Text::VisualPrintf::Transform->new(
    length => \&Text::VisualWidth::PP::width,
    match => qr/\P{ASCII}+/,

Then next program encode data, call expand() function, and recover the result into the original text.

my @lines = <>;
my @expanded = expand @lines;
print @expanded;

kaz-utashiro@github 8 comments

Fancy::Open Fancy::Open opens a file and creates an array with several options.

(The module has been renamed, url updated.)


Fancy::Open opens a file and creates an array with an optional prefix string, suffix string, or both to the lines in the file. You can also add an optional string to join the prefix, line, and suffix. You can specify how to handle empty lines. The array is returned in your preferred encoding.


This document describes Fancy::Open version 1.0.


fancy_open can be exported and returns a list of values. These values can be modified if the optional parameters prefix, suffix, or both are used. You can also add a joiner string to join the prefix, line, and suffix. If your file could have empty lines, the empty option can be used to specify how to handle them. There is the additional option to choose your encoding, the default is utf-8.

If the open fails, fancy_open will die.

perl my @fancy_array = fancy_open( 'file_path', { 'prefix' => 'prefix_string', 'suffix' => 'suffix_string', 'joiner' => 'joiner_string', 'empty' => 'empty_option', # fill, blank, or undefined 'encoding' => 'encoding_option' # any valid encoding } );

The file is also closed by fancy_open.

Fancy::Open requires Perl version 5.6 or better.


fancy_open has two parameters.

Note: all sample returned arrays are the results from Data::Dump.

Sample file contents.

red orange yellow spring green teal cyan azure blue violet magenta pink white black gray


perl my @plain_array = fancy_open('file_path');

The first parameter is the file to be opened. If this is the only parameter specified, the file will be opened, encoded to utf-8, and returned as a list.


The second parameter are the options: prefix, suffix, joiner, empty, and encoding.


perl my @prefix_array = fancy_open('file_path', { 'prefix' => 'solid' });

The prefix option is the string you want prepended to each item in the list. Using the example, all items on the list will be returned with solid prepended to them.

perl ( "solidred", "solidorange", "solidyellow", "solidspring", "solidgreen", "solidteal", "solidcyan", "solidazure", "solidblue", "solidviolet", "solidmagenta", "solidpink", "solidwhite", "solidblack", "solidgray", )


perl my @suffix_array = fancy_open('file_path', { 'suffix' => 'bead; });

The suffix option is the string you want to appear appended to each item in the list. Using the example, all items on the list will be returned with bead appended to them.

perl ( "redbead", "orangebead", "yellowbead", "springbead", "greenbead", "tealbead", "cyanbead", "azurebead", "bluebead", "violetbead", "magentabead", "pinkbead", "whitebead", "blackbead", "graybead", )

prefix and suffix

perl my @both_array = fancy_open('file_path', { 'prefix' => 'solid', 'suffix' => 'bead' });

Using both the prefix and suffix options together will prepend and append the associated strings to the items in the list.

perl ( "solidredbead", "solidorangebead", "solidyellowbead", "solidspringbead", "solidgreenbead", "solidtealbead", "solidcyanbead", "solidazurebead", "solidbluebead", "solidvioletbead", "solidmagentabead", "solidpinkbead", "solidwhitebead", "solidblackbead", "solidgraybead", )


perl my @joiner_array = fancy_open('file_path', { 'prefix' => 'solid', 'suffix' => 'bead', 'joiner' => ' ' });

The joiner option will add a string between the prefix, the line from the file, and the suffix. In this case, a single space.

perl ( "solid red bead", "solid orange bead", "solid yellow bead", "solid spring bead", "solid green bead", "solid teal bead", "solid cyan bead", "solid azure bead", "solid blue bead", "solid violet bead", "solid magenta bead", "solid pink bead", "solid white bead", "solid black bead", "solid gray bead", )


perl my @empty_line = fancy_open('file_path', { 'empty' => 'fill' });

The empty option has three possible values for what to do with empty lines in the file: fill, blank, or undefined. If empty is not used or is any value than the three listed, the empty line will be ignored.

Sample file contents with an empty line.

``` red orange yellow spring green teal cyan azure

blue violet magenta pink white black gray ```

  • fill will prefix and suffix the value as it does with all other lines.

    perl my @empty_line = fancy_open('file_path', { 'prefix' => 'solid', 'empty' => 'fill' });

    The array returned will be:

    perl ( "solidred", "solidorange", "solidyellow", "solidspring", "solidgreen", "solidteal", "solidcyan", "solidazure", "solid", "solidblue", "solidviolet", "solidmagenta", "solidpink", "solidwhite", "solidblack", "solidgray", )

  • blank will return a zero length but defined value.

    perl my @empty_line = fancy_open('file_path', { 'prefix' => 'solid', 'empty' => 'blank' }); The array returned will be:

    perl ( "solidred", "solidorange", "solidyellow", "solidspring", "solidgreen", "solidteal", "solidcyan", "solidazure", "", "solidblue", "solidviolet", "solidmagenta", "solidpink", "solidwhite", "solidblack", "solidgray", )

  • undefined will return an undefined value.

    perl @empty_line = fancy_open('file_path', { 'prefix' => 'solid', 'empty' => 'undefined' });

    The array returned will be:

    perl ( "solidred", "solidorange", "solidyellow", "solidspring", "solidgreen", "solidteal", "solidcyan", "solidazure", undef, "solidblue", "solidviolet", "solidmagenta", "solidpink", "solidwhite", "solidblack", "solidgray", )


perl my @encoded_array = fancy_open('file_path', { 'encoding' => 'ascii' });

The encoding option is the encoding you want to use to open the file. The above file will be opened ascii encoded.

LadyAleena@github 4 comments