Perl đŸȘ Weekly #753 - Happy New Year!

Published: (December 29, 2025 at 05:03 AM EST)
6 min read
Source: Dev.to

Source: Dev.to

Hi there!

There wasn’t a lot of action this week, but I ran a live session on contributing to a Perl project and another one on contributing to a Python project. The Python event had more guests, but we were more productive during the Perl event—partly because Perl’s packaging and dependency‑management system is more standardized than Python’s. Who would have thought! :-)

I’ve scheduled a new event to contribute to a Perl module. I really hope these sessions will encourage more people to start contributing: first relatively small things, and then, as we run out of the smaller tasks, we can move on to more difficult ones.

New‑Year’s‑resolution challenge

Make one contribution to an open‑source project every week! At the last event I organized we sent 4 pull‑requests in 1.5 h. If you haven’t contributed yet it may take a bit longer at first, but with practice you can make a contribution within an hour. So, one hour every week for the next 52 weeks.

Here’s a GitHub issue where you can mention your work – it will help all of us keep the momentum going.

“If you are looking to explore new, web‑related development in the Perl ecosystem, I’d suggest you take a serious look at PAGI.”

Enjoy your week and have a healthy, fruitful New Year!

New App – OPC‑UA Pipe Gateway

opcua_pipe_gateway is an OPC‑UA client that allows reading and writing OPC‑UA variables via a command‑line interface, using STDIN for commands and STDOUT for results.
The application is available in two implementations:

  • Perl – opcua_pipe_gateway.pl
  • Python – opcua_pipe_gateway.py

ANNOUNCE – Perl.Wiki v 1.36

(no additional content provided)

Articles

  • Supercharge Event Loops with Thread::Subs
    Two issues with event‑loop coding: (1) it’s harder to write and maintain than linear, blocking code, and (2) despite the asynchronous behaviour, it’s still single‑threaded.

  • Anyone actually use LinkedList::Single?
    A new release exists – is it just an exercise in rewriting code, or is it actually used?

  • JSON::Schema::Validate example
    We used this example during an online session. I’d like to keep playing with the module and possibly send PRs, but the ones I’ve already submitted haven’t been accepted yet.

  • NOAA::Aurora for Space‑Weather Forecasts
    Dimitrios writes: “With the current solar maximum, I wanted to add aurora‑forecasting features to my iOS weather app, Xasteria. Instead of fetching text files from NOAA, I thought it would be nice for my weather‑proxy server to handle that. Hence I developed NOAA::Aurora and released it to CPAN.”

  • Writing Perl is Vibe Coding
    Is it? Or is this a misunderstanding of what Vibe Coding actually is?

  • Perl’s feature.pm and backwards incompatibility
    Shouldn’t new features at least emit a warning if they are “overwriting” an existing sub with a new built‑in?

  • Bit vectors save space on Santa’s list

A Quick Response

(Placeholder – content to be added later)

Pecan’s Tale: Migrating a terminal application from Term::ReadLine to Tickit

(Placeholder – content to be added later)

Web

  • Perl PAGI tutorial – early access
    For anyone interested in helping Joh shakedown the PAGI docs in preparation for publishing to CPAN, he’d love feedback on the tutorial.

  • Perl PAGI Project Update
    PAGI (Perl Asynchronous Gateway Interface) is a new web specification and reference server for Perl, designed to bring first‑class async/await support to web development. Think of it as Perl’s answer to Python’s ASGI – a modern foundation for WebSocket, Server‑Sent Events, and HTTP applications using Future and Future::AsyncAwait syntax.

  • The Weekly Challenge (by Mohammad Sajid Anwar)
    The challenge will help you step out of your comfort zone. You can even win $50 by participating; a champion is selected each month from among all contributors, thanks to sponsor Lance Wicks.

  • The Weekly Challenge – 354
    Welcome to a new week with a couple of fun tasks: “Min Abs Diff” and “Shift Grid.” If you’re new to the weekly challenge, why not join us and have fun every week? See the FAQ for more information.

  • RECAP – The Weekly Challenge – 353
    Enjoy a quick recap of last week’s contributions by Team PWC dealing with the “Max Words” and “Validate Coupon” tasks in Perl and Raku. You’ll find plenty of solutions to keep you busy.

  • Max Validate
    The blog post provides high‑quality, idiomatic Raku code. It solves the programming challenges while demonstrating Raku’s expressiveness and unique paradigms. The solutions are practical, well‑explained, and ready for use.

  • To each (array) his own
    Bob Lied’s solutions represent high‑quality, thoughtful Perl programming that balances elegance, performance, and maintainability. The dual‑implementation approach for Task 2, with accompanying benchmarks, shows a deep understanding of Perl’s performance characteristics.

  • Perl Weekly Challenge – Week 353
    Jaldhar provides concise, one‑liner‑inspired solutions for both challenges, focusing on achieving the result in a single line of code for Raku and a similar spirit for Perl.

  • waiting for Santa

    The primary strength is demonstrating the same logic implemented idiomatically across very different paradigms. This is highly educational; the solutions are not overly golfed.

  • Perl Weekly Challenge 353
    Solutions are technically impressive, highly original, and demonstrate expert‑level Perl mastery. The functional style, robust error handling, and sophisticated use of zip make these solutions outstanding from an engineering perspective.

  • Validate to the Max
    Matthias provides exceptionally well‑considered, pedagogically rich solutions that focus heavily on code design, readability, and thoughtful evaluation of Perl idioms (TIMTOWTDI). The solutions are characterised by deliberate, clear choices.

Overview

Prioritizing clarity and maintainability over mere conciseness, backed by explicit reasoning.

Swing Code

“Ok, swing code
 SWING!”

Packy’s core philosophy is to solve the problem once, then port the functional, pipeline‑based logic to other languages. This results in consistent, readable, and idiomatic solutions across the board.

Words and Shopping

Peter’s solutions are methodically crafted, resembling production‑grade scripts one might write for a business system. The code is not minimalistic but is instead self‑contained, well‑documented, and robust, with a focus on teachable insights.

The Weekly Challenge #353

The post presents a detailed plan or pseudocode for solving the problems before showing the final code. The solutions follow a direct, procedural style in Perl. They are correct but emphasize a straightforward implementation over brevity or exploring advanced language features.

Max Validation

Roger provides a brief and focused look at the challenges for a blog post, solving them efficiently in JavaScript and Raku. The solutions prioritize solving the problem directly over extensive commentary. Solutions are technically proficient, concise, and modern.

Validating Words

Simon implements both tasks using straightforward, loop‑based logic that prioritizes clarity and correct input handling. The solutions are methodical and include explicit checks for edge cases.

NICEPERL’s Lists

Great CPAN modules released last week.

Perl Maven Online – Live Open‑Source Contribution

DateEvent
January 08, 2025Boston.pm – online
January 13, 2025German Perl/Raku Workshop 2026 in Berlin
March 16‑18, 2025You joined the Perl Weekly to get weekly e‑mails about the Perl programming language and related topics.
  • Want to see more? See the archives of all the issues.
  • Not yet subscribed to the newsletter? Join us free of charge!

© Copyright Gåbor Szabó
The articles are copyright the respective authors.

Back to Blog

Related posts

Read more »