I got a fantastic opportunity to give a talk at Barcelona.pm 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!
The Dancer Core team has just released Dancer2 0.205001. This release primarily fixes some documentation issues with a couple of notable exceptions:
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:
Following is the p5p (Perl 5 Porters) mailing list summary for the past week.
const char * to refer to the return value from SvPV.
Yesterday I got a bug report from a user via Github about
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
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
char * pointer which was used to store a Perl string.
This led me to this
where the value corresponding to
$string in the above is read using
SvPV, and this
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.
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
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.
As part of a travel grant from The Perl Foundation, I was able to adjust a trip to visit AmsterdamX.pm, the French Perl Workshop, and London.pm.
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."
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 <script>. This is then converted into
<script> rather than an actual HTML script tag by the browser:
But supposing the user inputs <script>, what should be done with it?
If the <script> 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:
[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.
Edit: 5.24.2-RC1 and 5.22.4-RC1.
Following is the p5p (Perl 5 Porters) mailing list summary for the past half a week.
Following is the p5p (Perl 5 Porters) mailing list summary for the past week and a half.
Read this article on Perl6.Party
This is the second part in the series! Be sure you
read Part I first where we discuss
Seqs are and how to
Today, we'll take the
Seq apart and see what's up in it; what drives it;
and how to make it do exactly what we want.
PART II: That Iterated Quickly
The main piece that makes a
Seq do its thing is
an object that does the
role. It's this object that knows how to generate the next value, whenever
we try to pull a value from a
Seq, or push all of its values somewhere, or
simply discard all of the remaining values.
I was having trouble using DBI to bind an interval value. Wonder if anyone has a better solution than this:
i could not find any information about binding an Oracle INTERVAL LITERAL. Maybe I just missed it in the docs?
I've got quite a few CPAN distributions that require one another, and it's gotten to the point that it's very easy to forget to bump prereq versions before uploading a new release to the CPAN.
As a stopgap, I wrote Module::CheckDep::Version (may not be indexed yet). What this module does is using MetaCPAN::Client, fetches all distributions by author, pulls out all prerequisite distributions and the version of it that your distribution has listed, checks if there's a newer version of it, and lists out the ones that need a bump in the prereq's version.
Update: I've updated the distribution (v0.05) to install a binary,
checkdep, so that you don't have to write your own to use the library:
Usage: checkdep PAUSEID [options]
-a|--all Work on all dependencies, not just the author's
-m|--module String; Work only on a specific distribution. (eg: Mock::Sub)
-z|--zero Include dependencies listed with a version of zero
-h|--help Display this help screen
[This is an addendum post to a series. You may want to begin at the beginning. The last update was update #1.
IMPORTANT NOTE! When I provide you links to code on GitHub, I’m giving you links to particular commits. This allows me to show you the code as it was at the time the blog post was written and insures that the code references will make sense in the context of this post. Just be aware that the latest version of the code may be very different.]
This year is only the second time since 2011 that I’ve been unable to attend YAPC::NA. Since I couldn’t make it out to hang with my Perl peeps in person, I thought the least I could do is offer up a long-awaited update to Date::Easy.
This latest version (available now-ish on CPAN as 0.03_01, and to be upgraded to 0.04 within the next few days assuming CPAN Testers approves) contains a few small updates, and one big one. First, the miscellaneous bits:
This list contains just a small number of talks that I personally thought are important/enjoyable for the most readers. This is by no means an official list curated by an organization. See the YouTube playlist for all awesome talks. I also encourage you to write your own blog about TPC. And yes, it’s officially called “Tipsy” now!
Where did my test fail?
Although I tried to select talks with videos, I had to make an exception for this one. I wasn’t able to locate neither videos mentioned in this section.
On Tuesday night, Damian Conway talked about his new modules:
Dios lets you declare classes with Perl 6 syntax, which uses
Keyword::Declare to declare a couple new keywords it needs.
Test::Expr also utilize “adding new keywords”. First one is a wrapper around
Data::Dumper, and second one is a Test module that prints out source code when an error happens, which apparently was not a thing yet. Pretty awesome, right?
Why learn a whole new language for templating when you already know a perfectly good one? This isn't the first module that allows you to embed Perl in your templates, but it's yet another one.
Template::Compiled on MetaCPAN.
Read this article on Perl6.Party
I vividly recall my first steps in Perl 6 were just a couple of months
the first stable release of the language in December 2015. Around that time,
Larry Wall was making a presentation and showed a neat feature—the sequence
operator—and it got me amazed about just how powerful the language is:
# First 12 even numbers:
say (2, 4 … ∞)[^12]; # OUTPUT: (2 4 6 8 10 12 14 16 18 20 22 24)
# First 10 powers of 2:
say (2, 2², 2³ … ∞)[^10]; # OUTPUT: (2 4 8 16 32 64 128 256 512 1024)
# First 13 Fibonacci numbers:
say (1, 1, *+* … ∞)[^13]; # OUTPUT: (1 1 2 3 5 8 13 21 34 55 89 144 233)
The ellipsis (
…) is the sequence operator and the stuff it makes is the
object. And now, a year and a half after Perl 6's first release, I hope to
pass on my amazement to a new batch of future Perl 6 programmers.