Swiss Perl Workshop 2017 - Final Call For Papers

It's just over a month until this year's Swiss Perl Workshop in Villars-sur-Ollon. We already have Damian speaking as well as a few talks submit on topics such as: starting afresh with Mojolicious up to building an API using Swagger, profiling with Devel::NYTProf and memory leak tracing, high precision math in Perl 6, and using perl and Java together; but of course we would like more!

If you would like to attend this year's Swiss Perl Workshop and give a talk then please register and submit a talk. Your talk can be short (5 or 10 minutes) or longer (20, 40, or even 120 minutes) and we welcome talks on any topic, not just perl.

Many thanks to our sponsors, who have enabled this event to take place:

GivenGain | Oetiker + Partner AG | Perl Careers
Perl Services | | Open Systems AG

Strawberry Perl released

Strawberry Perl is available at

More details in Release Notes:

I would like to thank our sponsor Enlightened Perl Organisation for resources provided to our project.

What is a "Senior Developer"?

When a company hires All Around the World to develop new systems or work on existing ones, they're sometimes surprised to find out that, with few exceptions, we only hire senior engineers. We're not a "body shop." We're the experts you hire when you need things to work and you've discovered that the $100 a day freelancer wasn't such a bargain after all (true story).

So when a self-described intermediate developer asked me what I meant by "Senior Developer", and does it just meant "time on duty", I realized that what we're looking for is different from what other companies look for. We have high standards and a difficult hiring process, but it's worth it.

What follows is my (edited) response to that developer.

Introduce Perl tutorial site which write by google engineer

About a month ago, I got an e-mail. "Please introduce Perl tutorial site which is written by google engineer spent over 150 hours"

PERL Tutorial for Beginners - Complete Guide

A Silicon Valley engineer seems to have rarely introduced Perl, but recently it tells us that we have used Perl at the Google APP engine, and Amazon scalable MXNet cloud support Perl library AI::MXNet officially.

And about a month ago, I hear a veteran google engineer is writing Perl tutorial over 150 hours.

I'm glad for Silicon Valley engineer to be interested in Perl.

This site start with Perl download and installation, then there are basic topics.

PERL Tutorial for Beginners - Complete Guide

Download & Install Perl - Windows, Mac & Linux
Perl Variable
Perl Array
Perl Hashes
Perl Conditional Statements - If, If Else, Else if, Unless, Nested if
Perl Loops - Control Structures
Perl Operator
Perl Special Variables
Perl Regular Expression
Perl File I/O
Perl Subroutine
Perl Format- Getting perfect Output
Perl Coding Standards
Perl Error Handling
Perl Socket programming
Perl Modules and Packages

This is one way to learn Perl in English. I think that it is convenient for people who are studying Perl in English-speaking countries.

I asked Google engineers to see GitPrep and SPVM.

Perl 5 Porters Mailing List Summary: July 10th-16th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.


berrybrew, the Perlbrew for Windows, updated to v1.13

I've released berrybrew version 1.13.

The most notable change is the addition of the register command, which allows you to copy/move existing Strawberry Perl portable editions from your local/remote systems and have them operate as custom instances within berrybrew. Before registering a new instance:

> berrybrew available

The following Strawberry Perls are available:

    5.24.1_64       [installed] *

* Currently using

Now, copy your new instance into the instance directory (by default c:/berrybrew), then register it. I've used new_instance as the example instance directory in this case:

Bailador is still at its beginning..

...but it is becoming better from day to day.

In the time while I was thinking about what I should write about Bailador a new Github Issue was created. So I changed my mind...

Actually I just wanted to let you all know that I've released version 0.0.8 of Bailador today. I wanted to show you the Changelog and maybe I wanted to explain a few bits. I could've talked about Github Issue #169, because it appeared to be more work as I thought at first glance. I realized that some parts of the code in Bailador::App and Bailador::Route could be better and during refactoring I stumbled over After all I am hoping that I have left the code in a better state and the behaviour of Bailador is now more reasonable and consistent.

Now I am writing something else.

See you at!

I got a fantastic opportunity to give a talk at meetup in August. I'll speak about The Perl Foundation, focusing on grants and donations. For those who love technical talks as much as I do, there will be three more interesting talks by other Perl Mongers.

I started learning Spanish using Lingua::ES::Numeros. Uno, dos, tres. ¡Buenas tardes a todos!

New blog post: Using a DarkPAN with Carton

Read all about it here: !

Dancer2 0.205001 improves documentation and internals

The Dancer Core team has just released Dancer2 0.205001. This release primarily fixes some documentation issues with a couple of notable exceptions:

  • If HTTP::XSCookies is installed, Dancer2 will check at install time to see if the correct version is installed (Peter Mottram)

  • Dancer2 is now tested by Travis CI on Perl versions 5.22, 5.24, and 5.26, as well as Appveyor (Dave Jacoby)

  • All reference checking under the hood is handled by Ref::Util (Mickey Nasriachi)

We have several new contributors this release. Thanks to Dave Jacoby, Abdullah Diab, Glenn Fowler, and Jonathan Cast for your first patches to Dancer2!

The full changelog follows:

Perl 5 Porters Mailing List Summary: July 3rd-9th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.


Always use `const char *` to refer to the return value from SvPV

Always use const char * to refer to the return value from SvPV.

Yesterday I got a bug report from a user via Github about Text::Fuzzy.

The bug report described that in some cases, when the user searched for an edit distance with Unicode strings, the user's input value, $string in the following, seemed to be being overwritten and corrupted:

$tf->distance ($string);

I couldn't reproduce the user's bug using the script he supplied, but just in case, I went through the code and tried to find anywhere that a string might be being overwritten, by adding const in front of every char * pointer which was used to store a Perl string.

This led me to this line where the value corresponding to $string in the above is read using SvPV, and this line where the value pointed to is overwritten by the code. This is a special case which only executes when the user matches a byte string against a character string.

Using a controllerless servo on the Raspberry Pi with Perl

I put out a notice not long ago that I was contemplating writing a guide to using the Raspberry PI with Perl.

One person who pointed out one minor mistake of mine with follow up with some other questions, asked about how to run a servo without needing a controller board. I realized that I hadn't exposed a couple of functions in the core WiringPi::API distribution that allowed a user to configure the PWM frequency, which is required as the Pi default doesn't play nice with typical servos.

The default PWM base frequency on a Pi is 19.2MHz, which is then divided by the clock signal (default: 32) and the PWM range (0-1023). So to get the default operating frequency:

# base   range   clck     operational freq
19.2e6 / 1024  /  32   ==     586Hz

To get this down to 50Hz required for a typical servo, I bumped up the range to 2000 (nice round number), and then just bounced around with the clock signal divider until I hit 50:

19.2e6 / 2000 / 192 == 50Hz

The Hot New Language Named Rakudo

This article represents my own thoughts on the matter alone and is not an official statement on behalf of the Rakudo team or, perhaps, is not even representative of the majority opinion.

When I came to Perl 6 around its first stable Christmas 2015 release, "The Name Issue" was in hot debate. Put simply: Perl 6 is not a replacement to Perl; Perl 6 is not the "next" Perl; Perl 6 is a very different language to Perl; so why does it still have 'Perl' in its name?

From what I understand, the debate raged on for years prior to my arrival, so the topic always felt taboo to talk about, because it always ended up in a heated discussion, without a solution at end. However, we do need that solution.

PrettyDump's European Tour

As part of a travel grant from The Perl Foundation, I was able to adjust a trip to visit, the French Perl Workshop, and

I hadn't quite figured out what I was going to talk about (it's always easier to suggest a topic to me), but I was playing with a Perl 6 data dumper sorta thing I'm calling PrettyDump. I whipped that into shape so I could create a talk about it. The task by itself isn't so interesting, but seeing the Perl 6 on the inside makes it interesting to people.


Browsing the puny (I miss Borders!) Technology section at the local Barnes & Noble today, I did not see a single Perl book. I was hoping that they sold out, but the manager confirmed my fears: they no longer carry Perl books in that store. The reason, he said, is that no Perl book has been published since 2012.

In regard to the size of the Technology section: The way the shelves are stocked is based on sales. Since people rarely buy their technology books from the store (guilty...), the Technology section is correspondingly small. "The people who are interested in these books read them in the Cafe, but they never buy them."

The not-so-great escape

Escaping HTML is the process of converting a user's input into something which can be displayed back to the user in a web browser. For example, in a comment section on a blog, or a wiki editable by users.

Given user input such as <script>, to display that correctly, an HTML
escaper must output &lt;script&gt;. This is then converted into
<script> rather than an actual HTML script tag by the browser:


But supposing the user inputs &lt;script&gt;, what should be done with it?

If the &lt;script&gt; is not altered by the HTML escaper, then when it is displayed back to the user, it gets converted by the browser back into <script>, which is not what was intended, and even worse if the user tries to edit the comment again, the HTML tag may get removed from the text.

The solution to this problem is to also convert the ampersand, &, into an HTML entity, like this:


CPAN Testers Has an API

[Watch this lightning talk on The Perl Conference YouTube channel]

I've been working on the CPAN Testers project since 2015. In all that time, I've been focused on maintenance (which has involved more operations/administration tasks than any actual code changes) and modernization. It's that modernization effort that has led to a new CPAN Testers API.

This new API uses the Mojolicious web framework, along with an OpenAPI schema to expose all of the most useful CPAN Testers data. OpenAPI is a specification for web APIs, and there are tools like Swagger to generate a useful documentation website from your spec, like the CPAN Testers API documentation website.

Perl 5 Porters Mailing List Summary: June 29th - July 2nd

Edit: 5.24.2-RC1 and 5.22.4-RC1.

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past half a week.


Perl 5 Porters Mailing List Summary: June 20th-28th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week and a half.


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 hosted by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.