This week in PSC (200) | 2025-08-27

The transition meeting to the new PSC proved a bit tricky to schedule to get everyone from both the old and new PSC in attendance, but eventually we succeeded: Aristotle, Graham, Leon, Paul, and Philippe all participated.

  • We discussed our structure for PSC meetings and our learnings about it from last cycle. We briefly introduced Leon to it and went over the onboarding checklist.
  • We discussed roadmap items from the last cycle that did not get done, such as getting TLS in core. No decisions were taken as they will be for the new PSC to make.

[P5P posting of this summary]

Call for Papers & Participation - Perl Community Conference, Winter 2025

We are moving full steam ahead. The Journals are not so easy to put out 2x a year we are finding, but the editing process for Issue #2 is moving ahead nonetheless. We are now collecting papers for inclusion for Issue #3. But our hybrid conferences are proving to be very successful endeavors. We hope you will consider submitting a Science Track paper or regular Perl talk to this 2 day hybrid conference in sunny ole Austin, TX, USA.

See more:

https://science.perlcommunity.org/spj/announcement/view/9

Caching using Memcached


Caching in Perl using memcached.
Please check out the link for more information:
https://theweeklychallenge.org/blog/caching-using-memcached

Updated wikis: Perl, Mojolicious, CSS and JS, Debian and Digital Security

Get them at the usual place...

Finally fixed a two-decade bug in my File::Finder CPAN module

Twenty years is a long time in the world of software. That's how long it's been since I last updated my Perl module, File::Finder. But today, thanks to a bug report from a dedicated user, I'm excited to announce the release of version 1.0.0!

For those who don't know, File::Finder is a handy little module that gives you the power of the find command right in your Perl code. It turns out that it wasn't playing nicely with Windows, and it was high time to fix that.

It's a surreal and wonderful feeling to revisit code you wrote two decades ago and find that it's still useful to people. It's a testament to the power and longevity of Perl and the open-source community.

A big thank you to the user who took the time to report the bug and help me bring this module into the modern era. It's moments like these that make you appreciate the collaborative spirit of software development.

You can find the new, Windows-friendly version of File::Finder on CPAN: https://metacpan.org/pod/File::Finder (https://metacpan.org/pod/File::Finder)

#Perl #CPAN #SoftwareDevelopment #LegacyCode #OpenSource #ThrowbackThursday

[this message written with the assistance of Gemini CLI inside VSCode]

new GTC Architecture

Graphic::Toolkit::Color 1.9 brought several big new features which I will write about when 2.0 comes out - just to sum up what changed since 1.0. This time I want to describe the internal changes, since this release completed an in-depth rewrite. So this will be about software engineering, architecture and coding style. TLDR: simple, clear, DDD, OO by composition and arg and a color space DSL!

Benchmark::MCE on CPAN

I recently refactored the multi-core benchmarking framework I've been using for my Perl CPU benchmark suite (Benchmark::DKbench) and released it as a separate module: Benchmark::MCE.

Why spin it out? Because the harness can do more: it can be used to write custom benchmark suites of any type, generate massively parallel workloads for stress testing, or run throughput benchmarks against services and APIs.

The exact scenario that prompted me was a comparison of Cloud SQL database instances. We wanted to see how a 16-CPU Enterprise Plus instance would compare to a 24-CPU Enterprise instance under heavy load. One way to do that is to write one or more functions that run randomized, typical/heavy queries (e.g. random searches for SpareRoom ads in our case), then use Benchmark::MCE to time them running on dozens of parallel MCE workers to simulate high load:

PCC Videos Now Being Released

The 2024 Perl Community Conference videos are being sent out now. To get the early access, join our announcement-only email list at https://perlcommunity.org/science/#mailing_list.

You may also join the Perl Programmers Facebook Group, or if you're a member go there. A few days after the latest videos are sent to our exclusive mailing list, they will get set to the FB group.

Finally, you may monitor our Perl Community Subreddit, which will be the last place they are officially released to the public. We just dropped batch #2. We have 2 more batches for the 2024 PCC. Then we'll be doing it all over again for the 2025 Summer PCC we just had in July.

And if you see anyone else releasing them on any other platforms, note this is currently unauthorized!

Cheers, Brett Estrade (OODLER)

Finally fixed a two-decade bug in my File::Finder CPAN module

Twenty years is a long time in the world of software. That's how long it's been since I last updated my Perl module, File::Finder. But today, thanks to a bug report from a dedicated user, I'm excited to announce the release of version 1.0.0!

For those who don't know, File::Finder is a handy little module that gives you the power of the find command right in your Perl code. It turns out that it wasn't playing nicely with Windows, and it was high time to fix that.

It's a surreal and wonderful feeling to revisit code you wrote two decades ago and find that it's still useful to people. It's a testament to the power and longevity of Perl and the open-source community.

A big thank you to the user who took the time to report the bug and help me bring this module into the modern era. It's moments like these that make you appreciate the collaborative spirit of software development.

You can find the new, Windows-friendly version of File::Finder on CPAN: https://metacpan.org/pod/File::Finder (https://metacpan.org/pod/File::Finder)

#Perl #CPAN #SoftwareDevelopment #LegacyCode #OpenSource #ThrowbackThursday

[this message written with the assistance of Gemini CLI inside VSCode]

CVE-2025-40909


Reproduce the vulnerability CVE-2025-40909 in an isolated Docker container running Perl v5.34.0.

This week in PSC (199) | 2025-08-07

Only Graham and Philippe attended. We coordinated with Aristotle via chat.

We only met to discuss the mailing-list moderation and immediate actions
(which resolved to sending an email to them moderators, and another one
to the list).

We also talked about moderation in general, and got some ideas to discuss
with the next PSC.

[P5P posting of this summary]

Sydney August Meeting!

Thanks again to Organic Trader for hosting and providing a venue!

Meeting is as follows...

Speaker:
Stuart Cooper

Time and Date:
6:30-9pm
Wednesday 20th August 2025

Venue:
Organic Trader Pty Ltd
Level 1
Unit 13/809-821 Botany Rd
Rosebery NSW 2018

Getting there:
Walking from either Mascot or Green Square station seems to be roughly the same distance.

Please also join the Sydney PM email list (low volume), Australia Perl on FB, or you can point your browser at the Sydney PM website for the same links in longer form.

Is it still worth adding installation instructions to a distribution?

I have decided to write a successor to Pod::Readme that works as a Dist::Zilla plugin that plays well with Pod::Weaver.

The idea for Pod::Readme is that a README file that is simply a version of the module documentation isn't all that useful. It often lacks important details like the prerequisites or installation instructions, and it includes a lot of unnecessary details about functions and methods.

A README file should be short and sweet: a synopsis and description, installation instructions and requirements, links to issue trackers, source repos and author/copyright info.

As I am rewriting this, I am wondering if the installation instructions are necessary now?

Many distributions have a generic INSTALL file, generally created by something like Dist::Zilla::Plugin::InstallGuide.

Before Dist::Zilla was as widely used, another option was to add installation instructions to the README file, usually with a few boilerplate along the lines of

ANN: Perl.Wiki V 1.29. jsTree version V 1.00. CPAN::MetaCurator V 1.00

Remember to click 'Continue Reading' or whatever.

You can download Perl Wiki V 1.29.

And you can play with the jsTree version V 1.00.

Also the corresponding Perl module is on CPAN as:
CPAN::MetaCurator V 1.00.
This converts the JSON file exported from Perl.Wiki into a HTML/jsTree managed version.

A Quick Update on Dancer2 2.0.0

Hi all,

Hope you are all having a great summer!

Work continues on Dancer2 2.0.0, albeit a bit slower than planned. It's summer; trips happen, things come up, etc. etc. Progress is still happening though - we took in a few extra PRs (with one more incoming still), and a few more approvals for some items are needed.

I'll keep dropping updates as the release approaches. Hoping you are all as excited for this as I am :-)

Keep on Dancing! Jason

XS the easy way

XS has a reputation for being hard to access and I think it's a shame because I don't think it has to be: it's mostly that the Perl API is hard. What if you offload as much logic as possible to perl, and use XS only to expose functions to perl? That would be much easier for a casual XS writer who doesn't know anything about Perl's internals.

So, in this example I will write a simple XS module for a real-life API, in this case POSIX real-time semaphores. This allows you to synchronize data between different processes or threads. At its core the API is this:

sem_t* sem_open(const char* path, int open_flags, mode_t mode, unsigned int value);
int sem_close(sem_t *sem);
int sem_unlink(const char* path);

int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
int sem_post(sem_t *sem);

Remembering Matt Trout

We all knew Matt Trout differently.

To some, he was tough. Uncompromising. Intimidating, even. He was half-man, half-thermite, a brilliant intellect with a particular way of loving something so fiercely that if you didn’t match that intensity, he might burn straight through, leaving you feeling crispy at the edges. Others have spoken about his “Get good or get out” attitude and I think it’s important to acknowledge that whilst he forged a lot of people into better programmers, it also drove others away.

But my version of Matt was the best mentor I’ve ever had. He was never condescending, in fact he seemed to have an infinite amount of belief in me and patience with me that I’m not sure what I did to deserve. When I was drowning, he’d pull me out of the water at the last minute, give me a hint, and throw me back into the deep end. I learned to swim because he never doubted that I could.

Raku Quiz

At the latest German Perl Workshop I held a 40 min beginner- to mid level talk about Raku (slides). It was about the habits of Perl programmers that turn contra productive with this new language. This article is a summarizing recapitulation of the pitfalls minus the intro about the history of Raku, the zef ecosystem and some general knowledge - for all those who could not attend or don't speak German.

A pipe operator exists on perl v5.42?

You know how many languages have a "pipe" operator, either ready or in the making? Like PHP, here, for example: https://laravel-news.com/the-pipe-operator-is-coming-to-php-85

Well, Perl v5.42 (almost) has that too! Check these examples:


$ perl -E 'say "Alexander"->&CORE::substr(1, 3);'
lex

$ perl -E 'say ","->&CORE::join(qw/ 10 20 30 /);'
10,20,30

I believe this would work with any user defined or imported subroutine too, instead of the core functions (there you get to omit the "CORE::").

MetaCPAN running really well. Thanks!

I don't know everyone who is involved in maintaining MetaCPAN and I don't know all the details of the performance related issues that have been an ongoing challenge (I believe they have been related to relentless bots?).

In any case, this last week MetaCPAN seems to have been running flawlessly!

So rather than burying a thanks note in a github issue, I wanted to put a public thanks here to all the volunteers and sponsors that keep MetaCPAN (and CPAN) running.

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.