DEV Community

Gabor Szabo
Gabor Szabo

Posted on • Originally published at perlweekly.com

Perl 🐪 Weekly #776 - Learning Perl

Originally published at Perl Weekly 776

Hi there,

Recently, I came across an article, The Day I Decided Never to Learn Python by Randal L. Schwartz. Well, Randal doesn't need an introduction. He took us back to 2001, the same era when I first started learning Perl in 1999. He was a major guiding force during my early programming days.

Last week, I joined a live session by Gabor focussed on FalkorDB. It was fun watching him code and talk while I sat back as a silent spectator. You can learn a lot just by watching how he approaches coding. It reminded me of many years ago when I did pair programming with him and submitted a pull request to the Dancer2 project. Those were the golden days, when I had so much energy and time. That being said, I am still actively learning Perl and discovering how to do new things with it. These concepts may not be new to everyone, but they are new to me. For example, I recently played with GraphQL for the first time, and I've also been experimenting with RAG and JSON-RPC. I have shared my recent experiments down below.

The process of learning never stops. A few days ago, I noticed an update for HTTP::Message v7.02. Since it was released by Olaf Alders, I was curious to see what had changed. It turned to be something, I hadn't realised for all these years. While I am well-acquainted with HTTP methods like GET, POST, and PUT, I didn't know "0" could actually be a valid HTTP method name if you wanted it to be. This release added support for exactly that, thanks to contributor, Karen Etheridge. Amidst all of this, I am still trying to find time for my upcoming book on DBIx::Class. I recently shared a blog post demonstrating the power of DBIC components, and I am trying my best not to lose focus.

You might find that this edition is full of my own personal posts, as there was unfortunately very little community news to report this week. Regardless, I hope you enjoy the rest of the newsletter.

--
Your editor: Mohammad Sajid Anwar.

Announcements

This week in PSC (227) | 2026-06-01

This week we were back to full strength. We have now dealt with all of the belated issues and all of the blockers. Paul will be shipping 5.43.11 very shortly. With the amount of changes we have had to merge, we will not be able to rush the .11 cycle, but we intend to start the work on the 5.44 RC early, to ensure that we can release with as little additional delay as possible.


Articles

Result Class - Components

Continue with the series post on DBIx::Class, in this post I am showing the power of DBIC components dealing with date/timestamp column.

RAG with Perl

In this post, I try to decode what RAG is and how we can implement RAG engine in Perl talking to LLM and Vector database in a docker container.

CPAN Debian Package

First time managed to build a debian package for DBIx::Class::Async with step by step instructions.

JSON-RPC with Perl

After dealing with gRPC, next in line was JSON-RPC. The motivation was to explore MCP after getting to know JSON-RPC. It turned out to be too easy demonstrate.

Mojo meets GraphQL

The post is meant for beginners as I am exploring GraphQL for the first time as well. The best part is the use of GraphiQL for building and testing the API.

DBIx::Class and GraphQL

In this post, I shared how to integrate DBIx::Class with GraphQL. Having played with GraphQL, I can say it is not for weak heart. If you are coming from REST API background then it will take some time to get your head around it. I am telling this from my personal exprience.

CPAN and GraphQL

After DBIx::Class integration with GraphQL, my immediate task was to make the process easy as it doesn't have to this complicated. In the process, I released brand new CPAN distribution: DBIx::Class::Schema::GraphQL.


CPAN

FalkorDB

Perl client module for FalkorDB. This code was mostly generated using AI tools and has not been checked manually yet.

DBIx::Class::Schema::GraphQL

It was created while working on the DBIx::Class integration with GraphQL. Using this module, it is so easy to build GraphQL API.


Grants

Maintaining Perl (Tony Cook) May 2026

Maintaining Perl 5 Core (Dave Mitchell): May 2026


The Weekly Challenge

The Weekly Challenge by Mohammad Sajid Anwar will help you step out of your comfort-zone. You can even win prize money of $50 by participating in the weekly challenge. We pick one champion at the end of the month from among all of the contributors during the month, thanks to the sponsor Marc Perry.

The Weekly Challenge - 377

Welcome to a new week with a couple of fun tasks "Reverse Existence" and "Prefix Suffix". If you are new to the weekly challenge then why not join us and have fun every week. For more information, please read the FAQ.

RECAP - The Weekly Challenge - 376

Enjoy a quick recap of last week's contributions by Team PWC dealing with the "Chessboard Squares" and "Doubled Words" tasks in Perl and Raku. You will find plenty of solutions to keep you busy.

Doubled Chessboard

The post offers an orderly, aesthetically pleasing way of solving the Weekly Challenge problems using the modern-day features of Raku syntax. With the use of well-defined subset custom types to strongly validate input and a simple, tokenising object-oriented class structure for text processing, Arne creates a solution that is easy to read and maintain and takes care of the complex edge cases such as applying a look behind that crosses over multiple lines.

Doubled Words

Bob presents a creative solution to a challenging text processing issue by using a well known yet little used built-in feature of the Perl. The result is an elegant mechanism for bypassing tokens through a clearly documented and separated mechanism of backtracking while retaining context about the structure through the use of captured groups in the split regex.

Chess Solo

Jorg provides a very concise and mathematically elegant solution for the colorisation of a chessboard. By recognising that under mod 2 operations the coordinate bases are completely annihilated, implementations can be created in both Perl and J using only one line of code and they are both efficient and structurally minimalist.

The Weekly Challenge 376

An unusually clear yet detailed solution is provided in this blog post, as it combines clean, idiomatic code examples with short technical explanations about how to use regex to parse doubled words and how to compare two mathematical coordinates. Complex logic is presented so anyone can read easily and learn from.

Perl Weekly Challenge 376

The excellent demonstration of the capabilities of Perl as a function-based programming language is shown through this post with extremely short and idiomatic solutions. Luis Mochán has used expressive, single-line statements to convert complicated constraints into small, clean, logical data flows in an extraordinary manner with Perl.

A 1-Bit Chessboard and Fancy Separators

Matthias presents an analytical and well-defined solution to the difficulties presented by Challenge 376 through the use of well-separated parsing and formatting, clear comments on the use of regular expressions, and the submission of a clear and clean solution suitable for production.

You might think I’m crazy, but I don’t even care

A well-structured and very interesting review of Perl Weekly Challenge 376 is presented with a reference to principles from a popular culture item. Packy clearly illustrates the elegant way to process text in the real world while exhibiting outstanding technical expertise by explaining the complexity of lookahead logic and the constraints of the boundary in a way that allows for simple, idiomatic, and highly maintainable solutions.

Squares and pairs

This solution offers a very neat, simple, and mathematically pleasing method for solving the chessboard parity problem. Peter has effectively utilised the ASCII values (ord) of the column letters as well as the numeric row values to reduce a spatial coordinate problem to a quick and efficient calculation of a bitwise parity (& 1). The source code is formatted well, clearly commented, and takes advantage of the mathematics behind the solution so as to avoid unnecessary conditional barriers.

The Weekly Challenge - 376: Chessboard Squares

This post gives a very clear, well-organized, and visually intuitive representation of how to solve the programming challenge "Chessboard Squares". Explicitly laying out the grid coordinates with their appropriate color will provide an excellent foundation for developing an accurate and efficient lookup algorithm.

The Weekly Challenge #376

By using an elegant mathematical approach to the parity of squares on a chessboard, along with an incredibly efficient, single-pass regular expression, this code shows immense technical skill. The code also uses multi-line lookaheads, HTML tags, and back references, all handled by a simple subroutine (double_double_toil_and_trouble), that is suitable for use at production level.

Half a Chessboard

A general description of a previously completed task, this post shows a real-life application of code reuse. Roger created a nice, modular solution to decode coordinate mathematics (on the basis of (x+y) mod 2) by cleanly wrapping the existing helper function from the previous task. Therefore, through this implementation, he provides a concise representation of the solution and eliminates any duplicate logic.

Double chessboard

In this blog post, Simon's clever use of the bitwise XOR operator (^) as a parity check for a chess board is very creative. Additionally, he shows a well-organised and simple method of utilising re.split and list comprehensions to find the position of words while also overcoming some challenging lookahead and HTML boundary situations.


Rakudo

2026.22 Some AST Fruit


Weekly collections

NICEPERL's lists

Great CPAN modules released last week.


The corner of Gabor

A couple of entries sneaked in by Gabor.

FalkorDB client in Perl using CLI AI Agents

This is the first hour of the live coding session using AI to write Perl we had last week. (Free, registration required)

FalkorDB using Perl

This is the second hour of the live coding session using AI to write Perl we had last week. (Free, registration required)

Next: Perl development using AI

The next session in which each participant will have the opportunity to show how s/he is using AI to write Perl code. I am sure we will learn a lot from each other!

Growing Pains: Scaling AI Coding across Team and Repo Boundaries with Graham Knapp

Video recordings from the session yesterday. It is not Perl specific, but helps you understand things. For more such event, sign up to the Code Mavens Meetup group


Events

Boston Perl Mongers virtual monthly

June 9, 2026

Paris.pm monthly meeting

June 10, 2026

Purdue Perl Mongers (HackLafayette) - TBA

June 11, 2026

Perl development using AI (online)

June 17, 2026

Berlin.pm - Naumanns Biergarten

June 24, 2026

Toronto.pm - June Social Evening

June 25, 2026

The Perl and Raku Conference 2026

June 26-29, 2026, Greenville, SC, USA


You 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!

(C) Copyright Gabor Szabo
The articles are copyright the respective authors.

Top comments (0)