Functional fun with logical expressions

Here's a quickly thrown-together version of "Fun with logical expressions", written in Haskell:

Using Apache's Swiss Army Knife - mod_rewrite for RESTful APIs (part II)

Part II of a series on Apache's mod_rewrite.

A Marpa/Moops powered M4 implementation


The M4 language is a powerful macro processor, turing complete as well as a practical programming language. It is the core tool behind GNU Autoconf, in particular.

MarpaX::Languages::M4 package is a Marpa::R2/Moops powered implementation of it, 99% with the GNU M4 version ([1]) and have switches to alter its behaviour as wanted, so that one can have e.g. POSIX M4 as well.


MarpaX::Languages::M4 is distributed with an m4pp command-line, with all the GNU M4 implementation options, plus some other handy items, for example:

conversion to UNIX native end-of-line
comment start and end delimiters
string start and end delimiters

and some "advanced" options to alter the behaviour or extend M4 as you wish:

buffers unwrap order at the end (LIFO or FIFO)
any default can be altered on the command-line
unlimited number of bits for eval arithmetic (thanks to the really remarquable Bit::Vector package)
use perl or GNU Emacs regexps (via the new re::engine::GNU package)

Fun with logical expressions

Addendum 2: This set of rules is incomplete. See Fun with logical expressions 2 for an improved version.

Addendum: I've written a more or less equivalent Haskell version of this program.

Some programmers, when confronted with a boolean expression, think "I know, I'll use regular expressions". Now they have true problems.

This post was inspired by the TAUT exercise on SPOJ.

You're given a boolean expression consisting of variables (each being either true or false), a unary operator (not), and several binary operators (and, or, implies, equals). Your task is to determine whether the expression is a tautology, i.e. whether it evaluates to true for all possible variable values.

To make parsing easier, we're going to use a very simplified syntax:

Using Amazon SES and SNS from Perl.

Using Amazon SES and SNS from Perl.

[From my blog.] is sponsoring the QA Hackathon

Today we would like to announce that is sponsoring the 2015 Perl QA Hackathon. has been supporting many Perl events and was the main sponsor and host of the QA Hackathon in 2014.

booking.png is one of the world’s leading e-commerce companies.
Each day, over 800,000 room nights are reserved on our websites and apps by both leisure and business travelers.
Truly international, is available in 42 languages, and offers over 600,000 properties in 211 countries. Over 8,600 people all over the world are dedicated to serving’s customers, and we love having the opportunity to create an even better experience for them. We have our IT Department with over 750 employees and more than 54 nationalities based in Amsterdam, the Netherlands. is a dedicated contributor to the Perl and MySQL community.
Will you be joining us? Please following this link to see our current vacancies

How Perl + StickK helped me get organized

The last three months have been some of the most professionally productive months I've had in years. In true Perl fashion, it all boils down to a Perl-related "hack" with

Looking for BZ::Client Author

I am looking to contact Jochen Wiedmann who is the BZ::Client author (amongst other modules) whom I am guessing resides in Finland. I have emailed the associated email address and I created an RT ticket 1 year ago. Hopefully ownership of this module can be shared and development continued.

In the interim, users of BZ::Client (i.e. Bugzilla XMLRPC Client) might be interested in my GitHub Repo which includes a number of patches.

Update: Contact has been made! Persons with patches for BZ::Client are encouraged to submit them via GitHub for inclusion in a soon to be released new version.

About is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is run by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.