Wed May 27 22:50:36 2026
EVENTS
 FREE
SOFTWARE
INSTITUTE

POLITICS
JOBS
MEMBERS'
CORNER

MAILING
LIST

NYLXS Mailing Lists and Archives
NYLXS Members have a lot to say and share but we don't keep many secrets. Join the Hangout Mailing List and say your peice.

DATE 2026-04-01

HANGOUT

2026-05-27 | 2026-04-27 | 2026-03-27 | 2026-02-27 | 2026-01-27 | 2025-12-27 | 2025-11-27 | 2025-10-27 | 2025-09-27 | 2025-08-27 | 2025-07-27 | 2025-06-27 | 2025-05-27 | 2025-04-27 | 2025-03-27 | 2025-02-27 | 2025-01-27 | 2024-12-27 | 2024-11-27 | 2024-10-27 | 2024-09-27 | 2024-08-27 | 2024-07-27 | 2024-06-27 | 2024-05-27 | 2024-04-27 | 2024-03-27 | 2024-02-27 | 2024-01-27 | 2023-12-27 | 2023-11-27 | 2023-10-27 | 2023-09-27 | 2023-08-27 | 2023-07-27 | 2023-06-27 | 2023-05-27 | 2023-04-27 | 2023-03-27 | 2023-02-27 | 2023-01-27 | 2022-12-27 | 2022-11-27 | 2022-10-27 | 2022-09-27 | 2022-08-27 | 2022-07-27 | 2022-06-27 | 2022-05-27 | 2022-04-27 | 2022-03-27 | 2022-02-27 | 2022-01-27 | 2021-12-27 | 2021-11-27 | 2021-10-27 | 2021-09-27 | 2021-08-27 | 2021-07-27 | 2021-06-27 | 2021-05-27 | 2021-04-27 | 2021-03-27 | 2021-02-27 | 2021-01-27 | 2020-12-27 | 2020-11-27 | 2020-10-27 | 2020-09-27 | 2020-08-27 | 2020-07-27 | 2020-06-27 | 2020-05-27 | 2020-04-27 | 2020-03-27 | 2020-02-27 | 2020-01-27 | 2019-12-27 | 2019-11-27 | 2019-10-27 | 2019-09-27 | 2019-08-27 | 2019-07-27 | 2019-06-27 | 2019-05-27 | 2019-04-27 | 2019-03-27 | 2019-02-27 | 2019-01-27 | 2018-12-27 | 2018-11-27 | 2018-10-27 | 2018-09-27 | 2018-08-27 | 2018-07-27 | 2018-06-27 | 2018-05-27 | 2018-04-27 | 2018-03-27 | 2018-02-27 | 2018-01-27 | 2017-12-27 | 2017-11-27 | 2017-10-27 | 2017-09-27 | 2017-08-27 | 2017-07-27 | 2017-06-27 | 2017-05-27 | 2017-04-27 | 2017-03-27 | 2017-02-27 | 2017-01-27 | 2016-12-27 | 2016-11-27 | 2016-10-27 | 2016-09-27 | 2016-08-27 | 2016-07-27 | 2016-06-27 | 2016-05-27 | 2016-04-27 | 2016-03-27 | 2016-02-27 | 2016-01-27 | 2015-12-27 | 2015-11-27 | 2015-10-27 | 2015-09-27 | 2015-08-27 | 2015-07-27 | 2015-06-27 | 2015-05-27 | 2015-04-27 | 2015-03-27 | 2015-02-27 | 2015-01-27 | 2014-12-27 | 2014-11-27 | 2014-10-27 | 2014-09-27 | 2014-08-27 | 2014-07-27 | 2014-06-27 | 2014-05-27 | 2014-04-27 | 2014-03-27 | 2014-02-27 | 2014-01-27 | 2013-12-27 | 2013-11-27 | 2013-10-27 | 2013-09-27 | 2013-08-27 | 2013-07-27 | 2013-06-27 | 2013-05-27 | 2013-04-27 | 2013-03-27 | 2013-02-27 | 2013-01-27 | 2012-12-27 | 2012-11-27 | 2012-10-27 | 2012-09-27 | 2012-08-27 | 2012-07-27 | 2012-06-27 | 2012-05-27 | 2012-04-27 | 2012-03-27 | 2012-02-27 | 2012-01-27 | 2011-12-27 | 2011-11-27 | 2011-10-27 | 2011-09-27 | 2011-08-27 | 2011-07-27 | 2011-06-27 | 2011-05-27 | 2011-04-27 | 2011-03-27 | 2011-02-27 | 2011-01-27 | 2010-12-27 | 2010-11-27 | 2010-10-27 | 2010-09-27 | 2010-08-27 | 2010-07-27 | 2010-06-27 | 2010-05-27 | 2010-04-27 | 2010-03-27 | 2010-02-27 | 2010-01-27 | 2009-12-27 | 2009-11-27 | 2009-10-27 | 2009-09-27 | 2009-08-27 | 2009-07-27 | 2009-06-27 | 2009-05-27 | 2009-04-27 | 2009-03-27 | 2009-02-27 | 2009-01-27 | 2008-12-27 | 2008-11-27 | 2008-10-27 | 2008-09-27 | 2008-08-27 | 2008-07-27 | 2008-06-27 | 2008-05-27 | 2008-04-27 | 2008-03-27 | 2008-02-27 | 2008-01-27 | 2007-12-27 | 2007-11-27 | 2007-10-27 | 2007-09-27 | 2007-08-27 | 2007-07-27 | 2007-06-27 | 2007-05-27 | 2007-04-27 | 2007-03-27 | 2007-02-27 | 2007-01-27 | 2006-12-27 | 2006-11-27 | 2006-10-27 | 2006-09-27 | 2006-08-27 | 2006-07-27 | 2006-06-27 | 2006-05-27 | 2006-04-27 | 2006-03-27 | 2006-02-27 | 2006-01-27 | 2005-12-27 | 2005-11-27 | 2005-10-27 | 2005-09-27 | 2005-08-27 | 2005-07-27 | 2005-06-27 | 2005-05-27 | 2005-04-27 | 2005-03-27 | 2005-02-27 | 2005-01-27 | 2004-12-27 | 2004-11-27 | 2004-10-27 | 2004-09-27 | 2004-08-27 | 2004-07-27 | 2004-06-27 | 2004-05-27 | 2004-04-27 | 2004-03-27 | 2004-02-27 | 2004-01-27 | 2003-12-27 | 2003-11-27 | 2003-10-27 | 2003-09-27 | 2003-08-27 | 2003-07-27 | 2003-06-27 | 2003-05-27 | 2003-04-27 | 2003-03-27 | 2003-02-27 | 2003-01-27 | 2002-12-27 | 2002-11-27 | 2002-10-27 | 2002-09-27 | 2002-08-27 | 2002-07-27 | 2002-06-27 | 2002-05-27 | 2002-04-27 | 2002-03-27 | 2002-02-27 | 2002-01-27 | 2001-12-27 | 2001-11-27 | 2001-10-27 | 2001-09-27 | 2001-08-27 | 2001-07-27 | 2001-06-27 | 2001-05-27 | 2001-04-27 | 2001-03-27 | 2001-02-27 | 2001-01-27 | 2000-12-27 | 2000-11-27 | 2000-10-27 | 2000-09-27 | 2000-08-27 | 2000-07-27 | 2000-06-27 | 2000-05-27 | 2000-04-27 | 2000-03-27 | 2000-02-27 | 2000-01-27 | 1999-12-27

Key: Value:

Key: Value:

MESSAGE
DATE 2026-04-20
FROM Gabor Szabo
SUBJECT Subject: [Hangout - NYLXS] [Perlweekly] #769 - What is dead this week?
From hangout-bounces-at-nylxs.com Mon Apr 20 12:13:39 2026
Return-Path:
X-Original-To: archive-at-mrbrklyn.com
Delivered-To: archive-at-mrbrklyn.com
Received: from www2.mrbrklyn.com (www2.mrbrklyn.com [96.57.23.82])
by mrbrklyn.com (Postfix) with ESMTP id 0F13616410E;
Mon, 20 Apr 2026 12:13:38 -0400 (EDT)
X-Original-To: hangout-at-www2.mrbrklyn.com
Delivered-To: hangout-at-www2.mrbrklyn.com
Received: by mrbrklyn.com (Postfix, from userid 1000)
id D33F316410C; Mon, 20 Apr 2026 12:13:33 -0400 (EDT)
Resent-From: Ruben Safir
Resent-Date: Mon, 20 Apr 2026 12:13:33 -0400
Resent-Message-ID: <20260420161333.GA6833-at-www2.mrbrklyn.com>
Resent-To: hangout-at-mrbrklyn.com
X-Original-To: ruben-at-mrbrklyn.com
Delivered-To: ruben-at-mrbrklyn.com
Received: from s.wfbtzhsv.outbound-mail.sendgrid.net
(s.wfbtzhsv.outbound-mail.sendgrid.net [159.183.224.104])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(Client did not present a certificate)
by mrbrklyn.com (Postfix) with ESMTPS id C0EB116410A
for ; Mon, 20 Apr 2026 10:15:48 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szabgab.com;
h=content-type:date:from:mime-version:subject:to:cc:content-type:date:
from:subject:to;
s=s1; t=1776694545; bh=6ODXa4GIFYd3FaG748AuQM0T4suLP3ChBugYcEN0WAo=;
b=wdq9o4rEzeSe7H4zc6Q0lmeLxSNbscHH1yq7q17JCXtuT9X18hJcajSXM3xcd+rngS0p
jh0FejCKVPq6QbR3luTfiGm/3XgsHJpTAc5rHxLKF1cgkgd/hzKW1+9CuSNCo2QEh2MsPg
haK2Wwbh75tleadFs6ekHP1naxjb7iK4KtshE6nwPaFJn/k+u9O+7np9zbiuoOLnku57ts
DuU2NejOfVQur6XST167gkaE4W8gcpttbh31PhGv8XBedz6u7G8diiYwt/SFyzookvuIU4
4osEj8F6XAyHbMQ6B2yxBatx9MjTHSko1bt5x4nxKS1rWyZWGWvJn2Y6hURzNUIA==
Received: by recvd-6d84ff477d-gmmsp with SMTP id
recvd-6d84ff477d-gmmsp-1-69E63511-7B
2026-04-20 14:15:45.729031901 +0000 UTC m=+887495.241093942
Received: from MjA0MzMyMDc (unknown) by geopod-ismtpd-7 (SG) with HTTP
id pmUz7mlGR6y04T16QcKlCw Mon, 20 Apr 2026 14:15:45.633 +0000 (UTC)
Date: Mon, 20 Apr 2026 14:15:45 +0000 (UTC)
From: Gabor Szabo
Mime-Version: 1.0
Message-ID:
X-SG-EID: =?us-ascii?Q?u001=2EfEeT3imdomNYTgM3CPMr=2F5Dkst8c96g=2FUCTCSTQhFzPFq1p+hf5OYWVNg?=
=?us-ascii?Q?tIP=2F6ApbxJo=2Fjy7Zy5XCVjZWHAlUg8mwQcU4Zn7?=
=?us-ascii?Q?SPbGCPvnVJ4D7rFMUJxECrgSZzsaod6lYMYTkm7?=
=?us-ascii?Q?ChdpHA9p4z9OVq2Dx2=2FT8yWqV0HbxK7glK7q=2Fw8?=
=?us-ascii?Q?Dzq7kFfPOYqo3YwTX+0rZwsRxcP0vwX0bmpzs20?=
=?us-ascii?Q?g=3D=3D?=
To: ruben-at-mrbrklyn.com
X-Entity-ID: u001.JvYq+PmxR+Jk4HAvLs9YyA==
Subject: [Hangout - NYLXS] [Perlweekly] #769 - What is dead this week?
X-BeenThere: hangout-at-nylxs.com
X-Mailman-Version: 2.1.30rc1
Precedence: list
List-Id: NYLXS Tech Talk and Politics
List-Unsubscribe: ,

List-Archive:
List-Post:
List-Help:
List-Subscribe: ,

Content-Type: multipart/mixed; boundary="===============0794229255=="
Errors-To: hangout-bounces-at-nylxs.com
Sender: "Hangout"

--===============0794229255==
Content-Type: multipart/alternative; boundary=9a3d815dd89d00c2af46ba9ee4991fc2de0b575529571a89e7fa2f8b42a9

--9a3d815dd89d00c2af46ba9ee4991fc2de0b575529571a89e7fa2f8b42a9
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0

Perl Weekly=20

https://perlweekly.com/

You can read the newsletter on the web, if you prefer.
https://perlweekly.com/archive/769.html



Hi there,

Every week I see a post declaring about something being dead. Agile is
dead! Testing is dead!, Algol-68 is dead! I am so fed-up with this. So I am
not going to link to the article that was discussing 5 dead programming
languages.

Last week finally I got home and because of the flight I had to postpone
the Testing in Perl ( https://luma.com/perl-maven ) event so it will be
held this Thursday. You are invited to watch the previous sessions (
https://academy.code-maven.com/c/perl-testing-2026 ) (for now free of
charge) and join the next one.

The Perl Maven WhatsApp group (
https://chat.whatsapp.com/LRrkZsSRDvGLLwppyLnKHy ) already has more than 70
members. Unfortunately recently we got a few spammers so I had to turn on
registration-approval. This means that when you try to join I'll send you a
private message asking who you are. This is the little extra step we have
to do to avoid spam. Anyway, you are invited to join us!

Enjoy your week!

--
Your editor: Gabor Szabo.


Announcements

=20
TPRC Talk Submission Deadline in 2 days!
https://news.perlfoundation.org/post/tprc-talk-deadline
=20
=20
--------------

=20

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Articles

=20
Faster UTF-8 Validation
https://blogs.perl.org/users/chansen/2026/04/faster-utf-8-validation.html
=20
Way more information about UTF-8 than I can fit in my head.
--------------

=20
Enums for Perl: Adopting Devel::CallParser and Building Enum::Declare
https://dev.to/lnationorg/enums-for-perl-adopting-develcallparser-and-bui=
lding-enumdeclare-28bj
=20
=20
--------------

=20
Compiling Google::ProtocolBuffers::Dynamic on Debian Trixie
https://blogs.perl.org/users/dean/2026/04/compiling-googleprotocolbuffers=
dynamic-on-debian-trixie.html
=20
For a long time I have been trying to encourage Perl Module authors to
include installation instruction when external libraries are needed. Even
if only for one or two Linux distributions. This information should be in
the README of the project (
https://github.com/mbarbon/google-protobuf-dynamic ).
--------------

=20
Happy sharing
https://blogs.perl.org/users/egor/2026/04/happy-sharing.html
=20
How to share memory between processes? A survey of a bunch od Data::*
modules.
--------------

=20
Making an Asynchronous Clocking Drum Machine App in Perl
https://www.perl.com/article/making-an-asynchronous-clocking-drum-machine=
-in-perl/
=20
=20
--------------

=20
PDL in Rust -- Part Two
https://blogs.perl.org/users/petamem/2026/04/rust-pdl-part-two.html
=20
"The current PDL implementation in pperl covers roughly 3,000 assertions
end-to-end: about 1,400 on the Perl-facing connector side and about 1,600
on the engine side. As of this writing roughly 98% of the connector
assertions match upstream PDL 2.103 exactly, and most of the remaining
couple of dozen we already know why they fail. By the time you read this
the numbers will have drifted a little in our favour - give or take - but
the shape is the point, not the decimal."
--------------

=20

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Discussion

=20
parsing a csv with boms in every line
https://www.reddit.com/r/perl/comments/1sog0en/parsing_a_csv_with_boms_in=
_every_line/
=20
What kind of strange things people have to deal with?
--------------

=20
A curious case of an autovivified env var
https://www.reddit.com/r/perl/comments/1sn5he3/a_curious_case_of_an_autov=
ivified_env_var/
=20
Should the documentation of autovivification be comprehensive?
--------------

=20

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Grants

=20
Maintaining Perl 5 Core (Dave Mitchell): March 2026
https://news.perlfoundation.org/post/maintaining_perl_dave_mitchell_march=
_2026
=20
=20
--------------

=20
PEVANS Core Perl 5: Grant Report for March 2026
https://news.perlfoundation.org/post/pevans_core_dev_march_2026
=20
=20
--------------

=20
Maintaining Perl (Tony Cook) March 2026
https://news.perlfoundation.org/post/maintaining_perl_tonyc_march_2026
=20
=20
--------------

=20

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Perl

=20
This week in PSC (221) | 2026-04-13
https://blogs.perl.org/users/psc/2026/04/this-week-in-psc-220-2026-04-13.=
html
=20
=20
--------------

=20

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

The Weekly Challenge
The Weekly Challenge ( https://theweeklychallenge.org ) by Mohammad Sajid
Anwar ( https://manwar.org ) 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.
=20
The Weekly Challenge - 370
https://theweeklychallenge.org/blog/perl-weekly-challenge-370
=20
Welcome to a new week with a couple of fun tasks "Popular Word" and
"Scramble String". 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 ( https://theweeklychallenge.org/faq ).
--------------

=20
RECAP - The Weekly Challenge - 369
https://theweeklychallenge.org/blog/recap-challenge-369
=20
Enjoy a quick recap of last week's contributions by Team PWC dealing with
the "Valid Tag" and "Group Division" tasks in Perl and Raku. You will
find plenty of solutions to keep you busy.
--------------

=20
Perl Weekly Challenge 369: Valid Tag
https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-369-1.html
=20
This post provides multiple amazing examples of technical versatility by
providing a clean and direct solution written clearly in many different
programming languages with tremendous flair, it shows great elegance in
presenting the elegant and simple solution to the valid tag problem using
the idiomatic language of each respective programming language. Abigail
shows off expert level code writing skills by using the advanced
character class arithmetic features present within Perl; these advanced
ways of manipulating strings show the efficiency of his coding style,
while simultaneously creating visually appealing code.
--------------

=20
Perl Weekly Challenge 369: Group Division
https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-369-2.html
=20
This post offers an extremely polished and versatile engineering design f=
or
the island program project. Abigail has shown advanced expertise by using
a 'chunk-and-fill' method over many different programming languages
(Perl, C, and less common languages such as sed, including details on how
string slices and fill-up strings can be done with the least amount of
impact. Furthermore, it highlights a creative use of string replication
operators as well as very efficient use of loops that guarantee that the
final incomplete group will still have the correct amount of padding
added based on the requirements given in the challenge.
--------------

=20
Tag Division
https://raku-musings.com/tag-division.html
=20
In an idiomatic Raku implementation of the Group Division problem, as sho=
wn
pretty clearly here by Arne Sommer, the gather/take construct is utilised
nicely to collect the data clearly, and with the use of substr-rw for
in-place string manipulation and the replication operator (x) to add
padding, the solution is both easily readable and aesthetically pleasing.
--------------

=20
Perl Weekly Challenge: Week 369
https://www.braincells.com/perl/2026/04/perl_weekly_challenge_week_369.ht=
ml
=20
By taking advantage of mathematical precision and the crispness of concis=
e
syntax through the use of "one liners", Jaldhar has developed an
efficient method for solving this problem, no matter if you're using Raku
or Perl. Calculating the required amount of padding to add to a split
string before actually splitting it, allows for quick and accurate
results. Furthermore, the clever application of native string
manipulation functions adds an additional level of efficiency and clarity
to handling the grouping logic.
--------------

=20
Divided Tags
https://github.sommrey.de/the-bears-den/2026/04/17/ch-369.html
=20
This article offers a detailed examination of the many aspects of the
"Valid Tag" challenge and provides a well-defined "word" in order to
enhance the accuracy of processing. The body of this technical paper
describes Jorg's unique application of the Perl programming language's
ability to utilise global regular expressions (regex) to solve Task 2;
and also the excellent "Shape" verb from the J programming language that
has provided an efficient and generalised way to reshape and pad
multi-dimensional arrays.
--------------

=20
The Weekly Challenge 369
https://kolouch.net/perlweeklychallenge/blog-369.html
=20
In this post, we look at the approach both challenges in a disciplined an=
d
structured manner. The focus is on having code that is easy to maintain
and easy to read. We have examples showing clean, modular Perl and Python
code, and show examples of how the "Group Division" challenge is solved
using efficient use of list slicing and using generator expressions to
partition and pad strings in a method that's worthy of professional
quality.
--------------

=20
string indexes
https://fluca1978.github.io/2026/04/13/PerlWeeklyChallenge369.html
=20
Luca Ferrari exhibits an incredible degree of technical ability through h=
is
creation of five unique environments in which to accomplish the Week 369
challenges. Those five programming environments are: Raku, Python,
PostgreSQL (PL/Perl, PL/PgSQL, and PL/Java). Luca's elegant use of Raku's
rotor method combined with the ability of Python's list slicing to
achieve the same complex logic for string padding and partitioning, as
demonstrated in his application of The Group Division challenge, show how
many different programming languages can utilise very diverse methods to
accomplish the same technically precise logic.
--------------

=20
Perl Weekly Challenge 369
https://wlmb.github.io/2026/04/13/PWC369/
=20
The post demonstrates exceptional compact Perl programming by distilling
complex string processing procedures into "1.5-liners" that are quite
efficient. For Task 1, he builds camelCase tags from a string of input
values using the split, map, and join functions in order to achieve the
desired result in one pass. In addition, Luis's approach to Task 2 makes
use of a brilliant "alternation" regex (.{$size}|.+) as a means of
capturing both full and partial segments of an input string in an optimal
manner. The use of this regex allows him to create direct array-index
padding, resulting in code that is not only concise, but also very
technically accurate and well-balanced between the two principles.
--------------

=20
Good Tags and Good Chunks
https://github.com/MatthiasMuth/perlweeklychallenge-club/tree/muthm-369/c=
hallenge-369/matthias-muth#readme
=20
Matthias Muth has written an impressive article on internationalisation
(I18N) relating to pragmatic problem solving while still maintaining a
strong long-term support model through thoughtful design choices such as
those found within both the "Valid Tag" and "Group Division" solutions
provided by Matthias's book. The use of the Text::Unidecode module was
one way to create technically superior solutions that would accommodate
for the presence of non-ASCII character sets and would also adhere to the
rules specified in the challenge itself (e.g., valid tag). Additionally,
his solution for "Group Division" is equally amazing because he
accomplished this via a mathematical pad for the purpose of executing a
clean single regex global match - or a single line of functional code -
that could otherwise be accomplished via several iterations of code.
--------------

=20
Strings Will Tear Us Apart
https://packy.dardan.com/b/nR
=20
In this post, Packy gives a thorough, contemporary example of string
handling in Raku, Perl, Python, and Elixir. He creates a unique solution
to the "Group Division" challenge by using the Raku function .comb with
integer arguments to automatically divide into chunks and by using the
Perl 'unpack' function with a per-function constructed template,
demonstrating how you can creatively employ language idioms to
efficiently and effectively resolve a common programming issue and
provide a solution for data partitioning that uses little or minimal
resources.
--------------

=20
Fun with strings
http://ccgi.campbellsmiths.force9.co.uk/challenge/369
=20
In his article, Peter presents a practical and polished approach to
developing an order of operations for the sanitisation of strings. By
organising the procedure so that lower case, regular expression character
removal, and space & character combination are completed before the
creation of camelCase, the end product meets the requirements for both
camel case formatting as well as length requirements while still
producing clean, effective code.
--------------

=20
The Weekly Challenge - 369: Valid Tag
https://reiniermaliepaard.nl/pwc/index.php?id=3Dpwc369-1
=20
In Reinier's method, a model for defensive programming has been developed
that features validation of input for real alphabetic values before
processing. Also, he has taken a somewhat technical approach
(transforming input to remove non-letter characters by converting them to
spaces in order to apply camelCase correctly while keeping word
boundaries intact) through his use of multiple accurately readable
regular expressions.
--------------

=20
The Weekly Challenge - 369: Group Division
https://reiniermaliepaard.nl/pwc/index.php?id=3Dpwc369-2
=20
Reinier has created a very good tutorial solution which showcases how to
use the "Perl 4-argument substr function" to extract and remove data from
a string using a while loop to do so iteratively and then using string
replication for the final padding makes the code extremely readable and a
great technical example of using efficient in-place usage of strings.
--------------

=20
The Weekly Challenge #369
https://hatley-software.blogspot.com/2026/04/robbie-hatleys-solutions-in-=
perl-for_16.html
=20
The work done by Robbie within the "Valid Tag" review indicates a very we=
ll
thought out way to approach hyphenated compound words as a single entity
for case adjustment, in addition to providing an innovative solution for
"Group Division", by utilising the four-argument form of Perl's substr in
order to easily "chop and fill" strings, while also demonstrating his
superior knowledge of high-performance string manipulation.
--------------

=20
Divided Validity
https://blog.firedrake.org/archive/2026/04/The_Weekly_Challenge_369__Divi=
ded_Validity.html
=20
Roger's technical review offers an interesting side-by-side comparison of
various string handling paradigms from multiple programming languages.
The "Valid Tag" part of the review shows how Crystal's highly performant
state machine implementation allows for case conversion to be
accomplished in a single pass. The "Group Division" analysis of
in_groups_of() in Crystal is very interesting as well, as it illustrates
just how compact that library function is compared to typical iterative
slicing found in Typst, demonstrating that using built-in library
functions can greatly simplify the implementation of algorithmic logic
through less code complexity.
--------------

=20
Group Tag
https://dev.to/simongreennet/weekly-challenge-group-tag-k56
=20
A wonderful illustration of Test-driven development is Simon's critique o=
f
Challenge 369. He found through tests that the sanitisation step of
"Valid Tag", had to be completed before performing case formatting so
that example 5 is handled properly. He also provides useful technical
comparisons between both languages' ecosystem strengths, such as Python
using more_itertools.grouper vs Perl doing it manually by iteration.
--------------

=20

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Weekly collections

=20
NICEPERL's lists
http://niceperl.blogspot.com/
=20
Great CPAN modules released last week (
https://niceperl.blogspot.com/2026/04/dxcvi-9-great-cpan-modules-released
.html ).
--------------

=20

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Events

=20
Perl Maven online: Testing in Perl - part 4
https://luma.com/perl-maven
=20
April 23, 2026
--------------

=20
Perl Toolchain Summit 2026
https://www.perl.com/article/announcing-the-perl-toolchain-summit-2026/
=20
April 23-26, 2026
--------------

=20
Boston Perl Mongers virtual monthly
https://boston.pm.org/
=20
May 12, 2026
--------------

=20
The Perl and Raku Conference 2026
https://tprc.us/tprc-2026-gsp/
=20
June 26-29, 2026, Greenville, SC, USA
--------------

=20

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D




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 ( https://perlweekly.com/archive/ ) of a=
ll the issues.

Reading this as a non-subscriber? Join us free of charge. https://perlweekl=
y.com/

(C) Copyright Gabor Szabo https://szabgab.com/
The articles are copyright the respective authors.

You can freely redistribute this message if
you keep the whole message intact, including
the Copyright notice and this text.

If you don't want to receive mails any more
you can unsubscribe here: https://perlweekly.com/unsubscribe.html


--9a3d815dd89d00c2af46ba9ee4991fc2de0b575529571a89e7fa2f8b42a9
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=us-ascii
Mime-Version: 1.0





1.0, user-scalable=3Dyes">
Perl Weekly Issue #769 - 2026-04-20 - What is dead this week?</tit=<BR>le><BR></head><BR><body><BR><BR><style><BR>* { text-align: left; }<BR>table {<BR> font-family: helvetica, arial, sans-serif;<BR> width: 700px;<BR>}<BR>-at-media (max-width: 800px) {<BR> table {<BR> width: 370px;<BR> }<BR>}<BR>p { margin: 1.2em 0em 1.35em 0em; line-height: 1.4em; }<BR>a { color: #04c; }<BR><BR>#menu {<BR> border-bottom: 1px solid #ccc;<BR>}<BR>#menu ul {<BR> text-align: center;<BR> margin: 0;<BR>}<BR>#menu li {<BR> font-size: 12px;<BR> display: inline;<BR> list-style-type: none;<BR> padding-right: 10px;<BR>}<BR><BR>#social_icons {<BR> margin-top: 10px;<BR>}<BR><BR></style><BR><BR><table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" align=3D"center" bg=<BR>color=3D"#ffffff"><BR><tr><td><BR> <p id=3D"logo"><BR> <a href=3D"https://perlweekly.com/" style=3D"<BR> background-color: #004065;<BR> color: #FFF;<BR> text-decoration: none;<BR> font-size: 40px;<BR> font-weight: bold;<BR> font-family: Gadget;<BR> =20<BR> border-radius: 5px;<BR> -moz-border-radius: 5px;<BR> -webkit-border-radius: 5px;<BR> border: 1px solid #000;<BR> padding: 10px;<BR> ">Perl Weekly</a><BR> =20<BR> </p><BR> <p id=3D"issue"<BR> style=3D"border-bottom: 1px solid #ccc;<BR> padding-bottom: 8px;<BR> font-size: 18px;"><BR> Issue #769 - 2026-04-20 - What is dead this week?<BR> </p><BR><BR> <a href=3D"https://perlweekly.com/latest.html">latest</a> | <a href=3D"=<BR>https://perlweekly.com/archive">archive</a> | edited by <a href=3D"https://=<BR>szabgab.com/">Gabor Szabo</a><BR><BR> =20<BR> <div><BR> This edition was made possible by the <a href=3D"https://www.patreo=<BR>n.com/szabgab">supporters of our cause</a>.<BR> </div><BR> =20<BR><BR> <div style=3D"text-align: center"><BR> You can <a href=3D"https://perlweekly.com/archive/769.html">read the ne=<BR>wsletter on the web</a>, if you prefer.<BR> </div><BR>=20<BR></td></tr><BR><BR><tr><td><BR> <table><BR> <tr><td><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Hi there,<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Every week I see a post declaring about something being dead. Agile=<BR> is dead! Testing is dead!, Algol-68 is dead! I am so fed-up with this. So =<BR>I am not going to link to the article that was discussing 5 dead programmin=<BR>g languages.<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Last week finally I got home and because of the flight I had to pos=<BR>tpone the <a href=3D"https://luma.com/perl-maven">Testing in Perl</a> event=<BR> so it will be held this Thursday. You are invited to <a href=3D"https://ac=<BR>ademy.code-maven.com/c/perl-testing-2026">watch the previous sessions</a> (=<BR>for now free of charge) and join the next one.<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> The <a href=3D"https://chat.whatsapp.com/LRrkZsSRDvGLLwppyLnKHy">Pe=<BR>rl Maven WhatsApp group</a> already has more than 70 members. Unfortunately=<BR> recently we got a few spammers so I had to turn on registration-approval. =<BR>This means that when you try to join I'll send you a private message asking=<BR> who you are. This is the little extra step we have to do to avoid spam. An=<BR>yway, you are invited to join us!<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Enjoy your week!<BR> </p><BR> =20<BR> <p style=3D"font-size: 14px"><BR> Your editor: Gabor Szabo.<BR> </p><BR> </td><BR> <td><BR> <img style=3D"right:0; bottom: 0;" src=3D"https://perlweekly.com/i=<BR>mg/gabor_szabo.png" /><BR> </td></tr><BR> </table><BR></td></tr><BR><BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"announcements" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Announcements</d=<BR>iv><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://news.perlfoundation.org/post/tprc-talk-de=<BR>adline" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">TPRC Talk Submission Deadline in 2 days!</a><BR> <br /> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"articles" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Articles</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/chansen/2026/04/fast=<BR>er-utf-8-validation.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Faster UTF-8 Validation</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/chansen/">Christian Hansen</a> (<a hre=<BR>f=3D"https://metacpan.org/author/CHANSEN">CHANSEN</a>) </s=<BR>pan> <p style=3D"font-size: 16px"><BR> Way more information about UTF-8 than I can fit in my head=<BR>.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/christian_hansen.png" title=3D"Christian Hansen" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://dev.to/lnationorg/enums-for-perl-adopting=<BR>-develcallparser-and-building-enumdeclare-28bj" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Enums for Perl: Adopting Devel::CallParser and Building=<BR> Enum::Declare</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/robert_acock/">Robert Acock</a> </span> =<BR> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/dean/2026/04/compili=<BR>ng-googleprotocolbuffersdynamic-on-debian-trixie.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Compiling Google::ProtocolBuffers::Dynamic on Debian Tr=<BR>ixie</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://fragfest.=<BR>com.au/">Dean Hamstead</a> (<a href=3D"https://meta=<BR>cpan.org/author/DJZORT">DJZORT</a>) </span> =<BR><p style=3D"font-size: 16px"><BR> For a long time I have been trying to encourage Perl Modul=<BR>e authors to include installation instruction when external libraries are n=<BR>eeded. Even if only for one or two Linux distributions. This information sh=<BR>ould be in the README of <a href=3D"https://github.com/mbarbon/google-proto=<BR>buf-dynamic">the project</a>.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/dean_hamstead.jpg" title=3D"Dean Hamstead" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/egor/2026/04/happy-s=<BR>haring.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Happy sharing</a><BR> <br /> <p style=3D"font-size: 16px"><BR> How to share memory between processes? A survey of a bunch=<BR> od Data::* modules.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.perl.com/article/making-an-asynchrono=<BR>us-clocking-drum-machine-in-perl/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Making an Asynchronous Clocking Drum Machine App in Per=<BR>l</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://ology.gi=<BR>thub.io/">Gene Boggs</a> (<a href=3D"https://metacp=<BR>an.org/author/GENE">GENE</a>) </span> <p sty=<BR>le=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/petamem/2026/04/rust=<BR>-pdl-part-two.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">PDL in Rust -- Part Two</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://www.peta=<BR>mem.com/">PetaMem</a> </span> <p style=3D"fo=<BR>nt-size: 16px"><BR> "The current PDL implementation in pperl covers roughly 3,=<BR>000 assertions end-to-end: about 1,400 on the Perl-facing connector side an=<BR>d about 1,600 on the engine side. As of this writing roughly 98% of the con=<BR>nector assertions match upstream PDL 2.103 exactly, and most of the remaini=<BR>ng couple of dozen we already know why they fail. By the time you read this=<BR> the numbers will have drifted a little in our favour - give or take - but =<BR>the shape is the point, not the decimal."<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"discussion" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Discussion</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.reddit.com/r/perl/comments/1sog0en/pa=<BR>rsing_a_csv_with_boms_in_every_line/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">parsing a csv with boms in every line</a><BR> <br /> <p style=3D"font-size: 16px"><BR> What kind of strange things people have to deal with?<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.reddit.com/r/perl/comments/1sn5he3/a_=<BR>curious_case_of_an_autovivified_env_var/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">A curious case of an autovivified env var</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/brian_d_foy/">brian d foy</a> (<a href=<BR>=3D"https://metacpan.org/author/BDFOY">BDFOY</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Should the documentation of autovivification be comprehens=<BR>ive?<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/brian_d_foy.png" title=3D"brian d foy" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"grants" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Grants</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://news.perlfoundation.org/post/maintaining_=<BR>perl_dave_mitchell_march_2026" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Maintaining Perl 5 Core (Dave Mitchell): March 2026</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Dave Mitchell </span> =<BR><p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://news.perlfoundation.org/post/pevans_core_=<BR>dev_march_2026" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">PEVANS Core Perl 5: Grant Report for March 2026</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://leonerds-=<BR>code.blogspot.com/">Paul Evans</a> (<a href=3D"http=<BR>s://metacpan.org/author/PEVANS">PEVANS</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/paul_evans.png" title=3D"Paul Evans" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://news.perlfoundation.org/post/maintaining_=<BR>perl_tonyc_march_2026" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Maintaining Perl (Tony Cook) March 2026</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Tony Cook (<a href=3D"https:/=<BR>/metacpan.org/author/TONYC">TONYC</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"perl" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Perl</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/psc/2026/04/this-wee=<BR>k-in-psc-220-2026-04-13.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">This week in PSC (221) | 2026-04-13</a><BR> <br /> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"the_weekly_challenge" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">The Weekly Chall=<BR>enge</div><BR> =20<BR> <p style=3D"font-size: 16px"><a href=3D"https://theweeklychalle=<BR>nge.org">The Weekly Challenge</a> by <a href=3D"https://manwar.org">Mohamma=<BR>d Sajid Anwar</a> will help you step out of your comfort-zone. You can even=<BR> win prize money of $50 by participating in the weekly challenge. We pick o=<BR>ne champion at the end of the month from among all of the contributors duri=<BR>ng the month, thanks to the sponsor Marc Perry.</p><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://theweeklychallenge.org/blog/perl-weekly-c=<BR>hallenge-370" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 370</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://manwar.o=<BR>rg/">Mohammad Sajid Anwar</a> (<a href=3D"https://m=<BR>etacpan.org/author/MANWAR">MANWAR</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Welcome to a new week with a couple of fun tasks "Popular =<BR>Word" and "Scramble String". If you are new to the weekly challenge then wh=<BR>y not join us and have fun every week. For more information, please read th=<BR>e <a href=3D"https://theweeklychallenge.org/faq">FAQ</a>.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/mohammad_anwar.png" title=3D"Mohammad Sajid Anwar" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://theweeklychallenge.org/blog/recap-challen=<BR>ge-369" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">RECAP - The Weekly Challenge - 369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://manwar.o=<BR>rg/">Mohammad Sajid Anwar</a> (<a href=3D"https://m=<BR>etacpan.org/author/MANWAR">MANWAR</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Enjoy a quick recap of last week's contributions by Team P=<BR>WC dealing with the "Valid Tag" and "Group Division" tasks in Perl and Raku=<BR>. You will find plenty of solutions to keep you busy.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/mohammad_anwar.png" title=3D"Mohammad Sajid Anwar" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://abigail.github.io/HTML/Perl-Weekly-Challe=<BR>nge/week-369-1.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 369: Valid Tag</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Abigail </span> <p sty=<BR>le=3D"font-size: 16px"><BR> This post provides multiple amazing examples of technical =<BR>versatility by providing a clean and direct solution written clearly in man=<BR>y different programming languages with tremendous flair, it shows great ele=<BR>gance in presenting the elegant and simple solution to the valid tag proble=<BR>m using the idiomatic language of each respective programming language. Abi=<BR>gail shows off expert level code writing skills by using the advanced chara=<BR>cter class arithmetic features present within Perl; these advanced ways of =<BR>manipulating strings show the efficiency of his coding style, while simulta=<BR>neously creating visually appealing code.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://abigail.github.io/HTML/Perl-Weekly-Challe=<BR>nge/week-369-2.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 369: Group Division</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Abigail </span> <p sty=<BR>le=3D"font-size: 16px"><BR> This post offers an extremely polished and versatile engin=<BR>eering design for the island program project. Abigail has shown advanced ex=<BR>pertise by using a 'chunk-and-fill' method over many different programming =<BR>languages (Perl, C, and less common languages such as sed, including detail=<BR>s on how string slices and fill-up strings can be done with the least amoun=<BR>t of impact. Furthermore, it highlights a creative use of string replicatio=<BR>n operators as well as very efficient use of loops that guarantee that the =<BR>final incomplete group will still have the correct amount of padding added =<BR>based on the requirements given in the challenge.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://raku-musings.com/tag-division.html" style=<BR>=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Tag Division</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://raku-mus=<BR>ings.com/">Arne Sommer</a> </span> <p style=<BR>=3D"font-size: 16px"><BR> In an idiomatic Raku implementation of the Group Division =<BR>problem, as shown pretty clearly here by Arne Sommer, the gather/take const=<BR>ruct is utilised nicely to collect the data clearly, and with the use of su=<BR>bstr-rw for in-place string manipulation and the replication operator (x) t=<BR>o add padding, the solution is both easily readable and aesthetically pleas=<BR>ing.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/arne-sommer.jpeg" title=3D"Arne Sommer" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.braincells.com/perl/2026/04/perl_week=<BR>ly_challenge_week_369.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge: Week 369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Jaldhar H. Vyas </span> =<BR> <p style=3D"font-size: 16px"><BR> By taking advantage of mathematical precision and the cris=<BR>pness of concise syntax through the use of "one liners", Jaldhar has develo=<BR>ped an efficient method for solving this problem, no matter if you're using=<BR> Raku or Perl. Calculating the required amount of padding to add to a split=<BR> string before actually splitting it, allows for quick and accurate results=<BR>. Furthermore, the clever application of native string manipulation functio=<BR>ns adds an additional level of efficiency and clarity to handling the group=<BR>ing logic.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://github.sommrey.de/the-bears-den/2026/04/1=<BR>7/ch-369.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Divided Tags</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://github.s=<BR>ommrey.de/">Jorg Sommrey</a> </span> <p styl=<BR>e=3D"font-size: 16px"><BR> This article offers a detailed examination of the many asp=<BR>ects of the "Valid Tag" challenge and provides a well-defined "word" in ord=<BR>er to enhance the accuracy of processing. The body of this technical paper =<BR>describes Jorg's unique application of the Perl programming language's abil=<BR>ity to utilise global regular expressions (regex) to solve Task 2; and also=<BR> the excellent "Shape" verb from the J programming language that has provid=<BR>ed an efficient and generalised way to reshape and pad multi-dimensional ar=<BR>rays.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://kolouch.net/perlweeklychallenge/blog-369.=<BR>html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge 369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Lubos Kolouch </span> =<BR><p style=3D"font-size: 16px"><BR> In this post, we look at the approach both challenges in a=<BR> disciplined and structured manner. The focus is on having code that is eas=<BR>y to maintain and easy to read. We have examples showing clean, modular Per=<BR>l and Python code, and show examples of how the "Group Division" challenge =<BR>is solved using efficient use of list slicing and using generator expressio=<BR>ns to partition and pad strings in a method that's worthy of professional q=<BR>uality.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://fluca1978.github.io/2026/04/13/PerlWeekly=<BR>Challenge369.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">string indexes</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://fluca1978=<BR>.blogspot.com">Luca Ferrari</a> </span> <p s=<BR>tyle=3D"font-size: 16px"><BR> Luca Ferrari exhibits an incredible degree of technical ab=<BR>ility through his creation of five unique environments in which to accompli=<BR>sh the Week 369 challenges. Those five programming environments are: Raku, =<BR>Python, PostgreSQL (PL/Perl, PL/PgSQL, and PL/Java). Luca's elegant use of =<BR>Raku's rotor method combined with the ability of Python's list slicing to a=<BR>chieve the same complex logic for string padding and partitioning, as demon=<BR>strated in his application of The Group Division challenge, show how many d=<BR>ifferent programming languages can utilise very diverse methods to accompli=<BR>sh the same technically precise logic.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://wlmb.github.io/2026/04/13/PWC369/" style=<BR>=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://wlmb.git=<BR>hub.io/">W Luis Mochan</a> </span> <p style=<BR>=3D"font-size: 16px"><BR> The post demonstrates exceptional compact Perl programming=<BR> by distilling complex string processing procedures into "1.5-liners" that =<BR>are quite efficient. For Task 1, he builds camelCase tags from a string of =<BR>input values using the split, map, and join functions in order to achieve t=<BR>he desired result in one pass. In addition, Luis's approach to Task 2 makes=<BR> use of a brilliant "alternation" regex (.{$size}|.+) as a means of capturi=<BR>ng both full and partial segments of an input string in an optimal manner. =<BR>The use of this regex allows him to create direct array-index padding, resu=<BR>lting in code that is not only concise, but also very technically accurate =<BR>and well-balanced between the two principles.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/luis-mochan.jpeg" title=3D"W Luis Mochan" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://github.com/MatthiasMuth/perlweeklychallen=<BR>ge-club/tree/muthm-369/challenge-369/matthias-muth#readme" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Good Tags and Good Chunks</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Matthias Muth </span> =<BR><p style=3D"font-size: 16px"><BR> Matthias Muth has written an impressive article on interna=<BR>tionalisation (I18N) relating to pragmatic problem solving while still main=<BR>taining a strong long-term support model through thoughtful design choices =<BR>such as those found within both the "Valid Tag" and "Group Division" soluti=<BR>ons provided by Matthias's book. The use of the Text::Unidecode module was =<BR>one way to create technically superior solutions that would accommodate for=<BR> the presence of non-ASCII character sets and would also adhere to the rule=<BR>s specified in the challenge itself (e.g., valid tag). Additionally, his so=<BR>lution for "Group Division" is equally amazing because he accomplished this=<BR> via a mathematical pad for the purpose of executing a clean single regex g=<BR>lobal match - or a single line of functional code - that could otherwise be=<BR> accomplished via several iterations of code.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://packy.dardan.com/b/nR" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Strings Will Tear Us Apart</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/packy_anderson/">Packy Anderson</a> (<=<BR>a href=3D"https://metacpan.org/author/PACKY">PACKY</a>) </=<BR>span> <p style=3D"font-size: 16px"><BR> In this post, Packy gives a thorough, contemporary example=<BR> of string handling in Raku, Perl, Python, and Elixir. He creates a unique =<BR>solution to the "Group Division" challenge by using the Raku function .comb=<BR> with integer arguments to automatically divide into chunks and by using th=<BR>e Perl 'unpack' function with a per-function constructed template, demonstr=<BR>ating how you can creatively employ language idioms to efficiently and effe=<BR>ctively resolve a common programming issue and provide a solution for data =<BR>partitioning that uses little or minimal resources.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/packy-anderson.jpeg" title=3D"Packy Anderson" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"http://ccgi.campbellsmiths.force9.co.uk/challenge=<BR>/369" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Fun with strings</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://ccgi.camp=<BR>bellsmiths.force9.co.uk/">Peter Campbell Smith</a> </span>=<BR> <p style=3D"font-size: 16px"><BR> In his article, Peter presents a practical and polished ap=<BR>proach to developing an order of operations for the sanitisation of strings=<BR>. By organising the procedure so that lower case, regular expression charac=<BR>ter removal, and space & character combination are completed before the cre=<BR>ation of camelCase, the end product meets the requirements for both camel c=<BR>ase formatting as well as length requirements while still producing clean, =<BR>effective code.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/peter-campbell-smith.png" title=3D"Peter Campbell Smith" width=3D"80"=<BR> /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://reiniermaliepaard.nl/pwc/index.php?id=3Dp=<BR>wc369-1" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 369: Valid Tag</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Reinier Maliepaard </span> =<BR> <p style=3D"font-size: 16px"><BR> In Reinier's method, a model for defensive programming has=<BR> been developed that features validation of input for real alphabetic value=<BR>s before processing. Also, he has taken a somewhat technical approach (tran=<BR>sforming input to remove non-letter characters by converting them to spaces=<BR> in order to apply camelCase correctly while keeping word boundaries intact=<BR>) through his use of multiple accurately readable regular expressions.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://reiniermaliepaard.nl/pwc/index.php?id=3Dp=<BR>wc369-2" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 369: Group Division</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Reinier Maliepaard </span> =<BR> <p style=3D"font-size: 16px"><BR> Reinier has created a very good tutorial solution which sh=<BR>owcases how to use the "Perl 4-argument substr function" to extract and rem=<BR>ove data from a string using a while loop to do so iteratively and then usi=<BR>ng string replication for the final padding makes the code extremely readab=<BR>le and a great technical example of using efficient in-place usage of strin=<BR>gs.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://hatley-software.blogspot.com/2026/04/robb=<BR>ie-hatleys-solutions-in-perl-for_16.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge #369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://hatley-s=<BR>oftware.blogspot.com/">Robbie Hatley</a> </span> =<BR> <p style=3D"font-size: 16px"><BR> The work done by Robbie within the "Valid Tag" review indi=<BR>cates a very well thought out way to approach hyphenated compound words as =<BR>a single entity for case adjustment, in addition to providing an innovative=<BR> solution for "Group Division", by utilising the four-argument form of Perl=<BR>'s substr in order to easily "chop and fill" strings, while also demonstrat=<BR>ing his superior knowledge of high-performance string manipulation.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blog.firedrake.org/archive/2026/04/The_We=<BR>ekly_Challenge_369__Divided_Validity.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Divided Validity</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blog.fir=<BR>edrake.org/">Roger Bell West</a> (<a href=3D"https:=<BR>//metacpan.org/author/FIREDRAKE">FIREDRAKE</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Roger's technical review offers an interesting side-by-sid=<BR>e comparison of various string handling paradigms from multiple programming=<BR> languages. The "Valid Tag" part of the review shows how Crystal's highly p=<BR>erformant state machine implementation allows for case conversion to be acc=<BR>omplished in a single pass. The "Group Division" analysis of in_groups_of()=<BR> in Crystal is very interesting as well, as it illustrates just how compact=<BR> that library function is compared to typical iterative slicing found in Ty=<BR>pst, demonstrating that using built-in library functions can greatly simpli=<BR>fy the implementation of algorithmic logic through less code complexity.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://dev.to/simongreennet/weekly-challenge-gro=<BR>up-tag-k56" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Group Tag</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://dev.to/s=<BR>imongreennet">Simon Green</a> (<a href=3D"https://m=<BR>etacpan.org/author/SGREEN">SGREEN</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> A wonderful illustration of Test-driven development is Sim=<BR>on's critique of Challenge 369. He found through tests that the sanitisatio=<BR>n step of "Valid Tag", had to be completed before performing case formattin=<BR>g so that example 5 is handled properly. He also provides useful technical =<BR>comparisons between both languages' ecosystem strengths, such as Python usi=<BR>ng more_itertools.grouper vs Perl doing it manually by iteration.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/simon-green.png" title=3D"Simon Green" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"weekly_collections" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Weekly collectio=<BR>ns</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"http://niceperl.blogspot.com/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">NICEPERL's lists</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://niceperl.=<BR>blogspot.com/">Miguel Prz</a> (<a href=3D"https://m=<BR>etacpan.org/author/NICEPERL">NICEPERL</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> <a href=3D"https://niceperl.blogspot.com/2026/04/dxcvi-9-g=<BR>reat-cpan-modules-released.html">Great CPAN modules released last week</a>.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"events" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Events</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://luma.com/perl-maven" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Maven online: Testing in Perl - part 4</a><BR> <br /> <p style=3D"font-size: 16px"><BR> April 23, 2026<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.perl--===============0794229255==<BR>Content-Type: multipart/alternative; boundary=9a3d815dd89d00c2af46ba9ee4991fc2de0b575529571a89e7fa2f8b42a9<BR><BR>--9a3d815dd89d00c2af46ba9ee4991fc2de0b575529571a89e7fa2f8b42a9<BR>Content-Transfer-Encoding: quoted-printable<BR>Content-Type: text/plain; charset=us-ascii<BR>Mime-Version: 1.0<BR><BR>Perl Weekly=20<BR><BR>https://perlweekly.com/<BR><BR>You can read the newsletter on the web, if you prefer.<BR>https://perlweekly.com/archive/769.html<BR><BR><BR><BR>Hi there,<BR><BR>Every week I see a post declaring about something being dead. Agile is<BR>dead! Testing is dead!, Algol-68 is dead! I am so fed-up with this. So I am<BR>not going to link to the article that was discussing 5 dead programming<BR>languages.<BR><BR>Last week finally I got home and because of the flight I had to postpone<BR>the Testing in Perl ( https://luma.com/perl-maven ) event so it will be<BR>held this Thursday. You are invited to watch the previous sessions (<BR>https://academy.code-maven.com/c/perl-testing-2026 ) (for now free of<BR>charge) and join the next one.<BR><BR>The Perl Maven WhatsApp group (<BR>https://chat.whatsapp.com/LRrkZsSRDvGLLwppyLnKHy ) already has more than 70<BR>members. Unfortunately recently we got a few spammers so I had to turn on<BR>registration-approval. This means that when you try to join I'll send you a<BR>private message asking who you are. This is the little extra step we have<BR>to do to avoid spam. Anyway, you are invited to join us!<BR><BR>Enjoy your week!<BR><BR> --<BR> Your editor: Gabor Szabo.<BR><BR><BR>Announcements<BR><BR> =20<BR> TPRC Talk Submission Deadline in 2 days!<BR> https://news.perlfoundation.org/post/tprc-talk-deadline<BR>=20<BR> =20<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Articles<BR><BR> =20<BR> Faster UTF-8 Validation<BR> https://blogs.perl.org/users/chansen/2026/04/faster-utf-8-validation.html<BR>=20<BR> Way more information about UTF-8 than I can fit in my head.<BR> --------------<BR><BR> =20<BR> Enums for Perl: Adopting Devel::CallParser and Building Enum::Declare<BR> https://dev.to/lnationorg/enums-for-perl-adopting-develcallparser-and-bui=<BR>lding-enumdeclare-28bj<BR>=20<BR> =20<BR> --------------<BR><BR> =20<BR> Compiling Google::ProtocolBuffers::Dynamic on Debian Trixie<BR> https://blogs.perl.org/users/dean/2026/04/compiling-googleprotocolbuffers=<BR>dynamic-on-debian-trixie.html<BR>=20<BR> For a long time I have been trying to encourage Perl Module authors to<BR> include installation instruction when external libraries are needed. Even<BR> if only for one or two Linux distributions. This information should be in<BR> the README of the project (<BR> https://github.com/mbarbon/google-protobuf-dynamic ).<BR> --------------<BR><BR> =20<BR> Happy sharing<BR> https://blogs.perl.org/users/egor/2026/04/happy-sharing.html<BR>=20<BR> How to share memory between processes? A survey of a bunch od Data::*<BR> modules.<BR> --------------<BR><BR> =20<BR> Making an Asynchronous Clocking Drum Machine App in Perl<BR> https://www.perl.com/article/making-an-asynchronous-clocking-drum-machine=<BR>-in-perl/<BR>=20<BR> =20<BR> --------------<BR><BR> =20<BR> PDL in Rust -- Part Two<BR> https://blogs.perl.org/users/petamem/2026/04/rust-pdl-part-two.html<BR>=20<BR> "The current PDL implementation in pperl covers roughly 3,000 assertions<BR> end-to-end: about 1,400 on the Perl-facing connector side and about 1,600<BR> on the engine side. As of this writing roughly 98% of the connector<BR> assertions match upstream PDL 2.103 exactly, and most of the remaining<BR> couple of dozen we already know why they fail. By the time you read this<BR> the numbers will have drifted a little in our favour - give or take - but<BR> the shape is the point, not the decimal."<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Discussion<BR><BR> =20<BR> parsing a csv with boms in every line<BR> https://www.reddit.com/r/perl/comments/1sog0en/parsing_a_csv_with_boms_in=<BR>_every_line/<BR>=20<BR> What kind of strange things people have to deal with?<BR> --------------<BR><BR> =20<BR> A curious case of an autovivified env var<BR> https://www.reddit.com/r/perl/comments/1sn5he3/a_curious_case_of_an_autov=<BR>ivified_env_var/<BR>=20<BR> Should the documentation of autovivification be comprehensive?<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Grants<BR><BR> =20<BR> Maintaining Perl 5 Core (Dave Mitchell): March 2026<BR> https://news.perlfoundation.org/post/maintaining_perl_dave_mitchell_march=<BR>_2026<BR>=20<BR> =20<BR> --------------<BR><BR> =20<BR> PEVANS Core Perl 5: Grant Report for March 2026<BR> https://news.perlfoundation.org/post/pevans_core_dev_march_2026<BR>=20<BR> =20<BR> --------------<BR><BR> =20<BR> Maintaining Perl (Tony Cook) March 2026<BR> https://news.perlfoundation.org/post/maintaining_perl_tonyc_march_2026<BR>=20<BR> =20<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Perl<BR><BR> =20<BR> This week in PSC (221) | 2026-04-13<BR> https://blogs.perl.org/users/psc/2026/04/this-week-in-psc-220-2026-04-13.=<BR>html<BR>=20<BR> =20<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>The Weekly Challenge<BR>The Weekly Challenge ( https://theweeklychallenge.org ) by Mohammad Sajid<BR> Anwar ( https://manwar.org ) will help you step out of your comfort-zone.<BR> You can even win prize money of $50 by participating in the weekly<BR> challenge. We pick one champion at the end of the month from among all of<BR> the contributors during the month, thanks to the sponsor Marc Perry.<BR> =20<BR> The Weekly Challenge - 370<BR> https://theweeklychallenge.org/blog/perl-weekly-challenge-370<BR>=20<BR> Welcome to a new week with a couple of fun tasks "Popular Word" and<BR> "Scramble String". If you are new to the weekly challenge then why not<BR> join us and have fun every week. For more information, please read the<BR> FAQ ( https://theweeklychallenge.org/faq ).<BR> --------------<BR><BR> =20<BR> RECAP - The Weekly Challenge - 369<BR> https://theweeklychallenge.org/blog/recap-challenge-369<BR>=20<BR> Enjoy a quick recap of last week's contributions by Team PWC dealing with<BR> the "Valid Tag" and "Group Division" tasks in Perl and Raku. You will<BR> find plenty of solutions to keep you busy.<BR> --------------<BR><BR> =20<BR> Perl Weekly Challenge 369: Valid Tag<BR> https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-369-1.html<BR>=20<BR> This post provides multiple amazing examples of technical versatility by<BR> providing a clean and direct solution written clearly in many different<BR> programming languages with tremendous flair, it shows great elegance in<BR> presenting the elegant and simple solution to the valid tag problem using<BR> the idiomatic language of each respective programming language. Abigail<BR> shows off expert level code writing skills by using the advanced<BR> character class arithmetic features present within Perl; these advanced<BR> ways of manipulating strings show the efficiency of his coding style,<BR> while simultaneously creating visually appealing code.<BR> --------------<BR><BR> =20<BR> Perl Weekly Challenge 369: Group Division<BR> https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-369-2.html<BR>=20<BR> This post offers an extremely polished and versatile engineering design f=<BR>or<BR> the island program project. Abigail has shown advanced expertise by using<BR> a 'chunk-and-fill' method over many different programming languages<BR> (Perl, C, and less common languages such as sed, including details on how<BR> string slices and fill-up strings can be done with the least amount of<BR> impact. Furthermore, it highlights a creative use of string replication<BR> operators as well as very efficient use of loops that guarantee that the<BR> final incomplete group will still have the correct amount of padding<BR> added based on the requirements given in the challenge.<BR> --------------<BR><BR> =20<BR> Tag Division<BR> https://raku-musings.com/tag-division.html<BR>=20<BR> In an idiomatic Raku implementation of the Group Division problem, as sho=<BR>wn<BR> pretty clearly here by Arne Sommer, the gather/take construct is utilised<BR> nicely to collect the data clearly, and with the use of substr-rw for<BR> in-place string manipulation and the replication operator (x) to add<BR> padding, the solution is both easily readable and aesthetically pleasing.<BR> --------------<BR><BR> =20<BR> Perl Weekly Challenge: Week 369<BR> https://www.braincells.com/perl/2026/04/perl_weekly_challenge_week_369.ht=<BR>ml<BR>=20<BR> By taking advantage of mathematical precision and the crispness of concis=<BR>e<BR> syntax through the use of "one liners", Jaldhar has developed an<BR> efficient method for solving this problem, no matter if you're using Raku<BR> or Perl. Calculating the required amount of padding to add to a split<BR> string before actually splitting it, allows for quick and accurate<BR> results. Furthermore, the clever application of native string<BR> manipulation functions adds an additional level of efficiency and clarity<BR> to handling the grouping logic.<BR> --------------<BR><BR> =20<BR> Divided Tags<BR> https://github.sommrey.de/the-bears-den/2026/04/17/ch-369.html<BR>=20<BR> This article offers a detailed examination of the many aspects of the<BR> "Valid Tag" challenge and provides a well-defined "word" in order to<BR> enhance the accuracy of processing. The body of this technical paper<BR> describes Jorg's unique application of the Perl programming language's<BR> ability to utilise global regular expressions (regex) to solve Task 2;<BR> and also the excellent "Shape" verb from the J programming language that<BR> has provided an efficient and generalised way to reshape and pad<BR> multi-dimensional arrays.<BR> --------------<BR><BR> =20<BR> The Weekly Challenge 369<BR> https://kolouch.net/perlweeklychallenge/blog-369.html<BR>=20<BR> In this post, we look at the approach both challenges in a disciplined an=<BR>d<BR> structured manner. The focus is on having code that is easy to maintain<BR> and easy to read. We have examples showing clean, modular Perl and Python<BR> code, and show examples of how the "Group Division" challenge is solved<BR> using efficient use of list slicing and using generator expressions to<BR> partition and pad strings in a method that's worthy of professional<BR> quality.<BR> --------------<BR><BR> =20<BR> string indexes<BR> https://fluca1978.github.io/2026/04/13/PerlWeeklyChallenge369.html<BR>=20<BR> Luca Ferrari exhibits an incredible degree of technical ability through h=<BR>is<BR> creation of five unique environments in which to accomplish the Week 369<BR> challenges. Those five programming environments are: Raku, Python,<BR> PostgreSQL (PL/Perl, PL/PgSQL, and PL/Java). Luca's elegant use of Raku's<BR> rotor method combined with the ability of Python's list slicing to<BR> achieve the same complex logic for string padding and partitioning, as<BR> demonstrated in his application of The Group Division challenge, show how<BR> many different programming languages can utilise very diverse methods to<BR> accomplish the same technically precise logic.<BR> --------------<BR><BR> =20<BR> Perl Weekly Challenge 369<BR> https://wlmb.github.io/2026/04/13/PWC369/<BR>=20<BR> The post demonstrates exceptional compact Perl programming by distilling<BR> complex string processing procedures into "1.5-liners" that are quite<BR> efficient. For Task 1, he builds camelCase tags from a string of input<BR> values using the split, map, and join functions in order to achieve the<BR> desired result in one pass. In addition, Luis's approach to Task 2 makes<BR> use of a brilliant "alternation" regex (.{$size}|.+) as a means of<BR> capturing both full and partial segments of an input string in an optimal<BR> manner. The use of this regex allows him to create direct array-index<BR> padding, resulting in code that is not only concise, but also very<BR> technically accurate and well-balanced between the two principles.<BR> --------------<BR><BR> =20<BR> Good Tags and Good Chunks<BR> https://github.com/MatthiasMuth/perlweeklychallenge-club/tree/muthm-369/c=<BR>hallenge-369/matthias-muth#readme<BR>=20<BR> Matthias Muth has written an impressive article on internationalisation<BR> (I18N) relating to pragmatic problem solving while still maintaining a<BR> strong long-term support model through thoughtful design choices such as<BR> those found within both the "Valid Tag" and "Group Division" solutions<BR> provided by Matthias's book. The use of the Text::Unidecode module was<BR> one way to create technically superior solutions that would accommodate<BR> for the presence of non-ASCII character sets and would also adhere to the<BR> rules specified in the challenge itself (e.g., valid tag). Additionally,<BR> his solution for "Group Division" is equally amazing because he<BR> accomplished this via a mathematical pad for the purpose of executing a<BR> clean single regex global match - or a single line of functional code -<BR> that could otherwise be accomplished via several iterations of code.<BR> --------------<BR><BR> =20<BR> Strings Will Tear Us Apart<BR> https://packy.dardan.com/b/nR<BR>=20<BR> In this post, Packy gives a thorough, contemporary example of string<BR> handling in Raku, Perl, Python, and Elixir. He creates a unique solution<BR> to the "Group Division" challenge by using the Raku function .comb with<BR> integer arguments to automatically divide into chunks and by using the<BR> Perl 'unpack' function with a per-function constructed template,<BR> demonstrating how you can creatively employ language idioms to<BR> efficiently and effectively resolve a common programming issue and<BR> provide a solution for data partitioning that uses little or minimal<BR> resources.<BR> --------------<BR><BR> =20<BR> Fun with strings<BR> http://ccgi.campbellsmiths.force9.co.uk/challenge/369<BR>=20<BR> In his article, Peter presents a practical and polished approach to<BR> developing an order of operations for the sanitisation of strings. By<BR> organising the procedure so that lower case, regular expression character<BR> removal, and space & character combination are completed before the<BR> creation of camelCase, the end product meets the requirements for both<BR> camel case formatting as well as length requirements while still<BR> producing clean, effective code.<BR> --------------<BR><BR> =20<BR> The Weekly Challenge - 369: Valid Tag<BR> https://reiniermaliepaard.nl/pwc/index.php?id=3Dpwc369-1<BR>=20<BR> In Reinier's method, a model for defensive programming has been developed<BR> that features validation of input for real alphabetic values before<BR> processing. Also, he has taken a somewhat technical approach<BR> (transforming input to remove non-letter characters by converting them to<BR> spaces in order to apply camelCase correctly while keeping word<BR> boundaries intact) through his use of multiple accurately readable<BR> regular expressions.<BR> --------------<BR><BR> =20<BR> The Weekly Challenge - 369: Group Division<BR> https://reiniermaliepaard.nl/pwc/index.php?id=3Dpwc369-2<BR>=20<BR> Reinier has created a very good tutorial solution which showcases how to<BR> use the "Perl 4-argument substr function" to extract and remove data from<BR> a string using a while loop to do so iteratively and then using string<BR> replication for the final padding makes the code extremely readable and a<BR> great technical example of using efficient in-place usage of strings.<BR> --------------<BR><BR> =20<BR> The Weekly Challenge #369<BR> https://hatley-software.blogspot.com/2026/04/robbie-hatleys-solutions-in-=<BR>perl-for_16.html<BR>=20<BR> The work done by Robbie within the "Valid Tag" review indicates a very we=<BR>ll<BR> thought out way to approach hyphenated compound words as a single entity<BR> for case adjustment, in addition to providing an innovative solution for<BR> "Group Division", by utilising the four-argument form of Perl's substr in<BR> order to easily "chop and fill" strings, while also demonstrating his<BR> superior knowledge of high-performance string manipulation.<BR> --------------<BR><BR> =20<BR> Divided Validity<BR> https://blog.firedrake.org/archive/2026/04/The_Weekly_Challenge_369__Divi=<BR>ded_Validity.html<BR>=20<BR> Roger's technical review offers an interesting side-by-side comparison of<BR> various string handling paradigms from multiple programming languages.<BR> The "Valid Tag" part of the review shows how Crystal's highly performant<BR> state machine implementation allows for case conversion to be<BR> accomplished in a single pass. The "Group Division" analysis of<BR> in_groups_of() in Crystal is very interesting as well, as it illustrates<BR> just how compact that library function is compared to typical iterative<BR> slicing found in Typst, demonstrating that using built-in library<BR> functions can greatly simplify the implementation of algorithmic logic<BR> through less code complexity.<BR> --------------<BR><BR> =20<BR> Group Tag<BR> https://dev.to/simongreennet/weekly-challenge-group-tag-k56<BR>=20<BR> A wonderful illustration of Test-driven development is Simon's critique o=<BR>f<BR> Challenge 369. He found through tests that the sanitisation step of<BR> "Valid Tag", had to be completed before performing case formatting so<BR> that example 5 is handled properly. He also provides useful technical<BR> comparisons between both languages' ecosystem strengths, such as Python<BR> using more_itertools.grouper vs Perl doing it manually by iteration.<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Weekly collections<BR><BR> =20<BR> NICEPERL's lists<BR> http://niceperl.blogspot.com/<BR>=20<BR> Great CPAN modules released last week (<BR> https://niceperl.blogspot.com/2026/04/dxcvi-9-great-cpan-modules-released<BR> .html ).<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Events<BR><BR> =20<BR> Perl Maven online: Testing in Perl - part 4<BR> https://luma.com/perl-maven<BR>=20<BR> April 23, 2026<BR> --------------<BR><BR> =20<BR> Perl Toolchain Summit 2026<BR> https://www.perl.com/article/announcing-the-perl-toolchain-summit-2026/<BR>=20<BR> April 23-26, 2026<BR> --------------<BR><BR> =20<BR> Boston Perl Mongers virtual monthly<BR> https://boston.pm.org/<BR>=20<BR> May 12, 2026<BR> --------------<BR><BR> =20<BR> The Perl and Raku Conference 2026<BR> https://tprc.us/tprc-2026-gsp/<BR>=20<BR> June 26-29, 2026, Greenville, SC, USA<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR><BR><BR><BR>You joined the Perl Weekly to get weekly e-mails about the Perl programming=<BR> language and related topics.<BR><BR>Want to see more? See the archives ( https://perlweekly.com/archive/ ) of a=<BR>ll the issues.<BR><BR>Reading this as a non-subscriber? Join us free of charge. https://perlweekl=<BR>y.com/<BR><BR>(C) Copyright Gabor Szabo https://szabgab.com/<BR>The articles are copyright the respective authors.<BR><BR>You can freely redistribute this message if<BR>you keep the whole message intact, including<BR>the Copyright notice and this text.<BR><BR>If you don't want to receive mails any more<BR>you can unsubscribe here: https://perlweekly.com/unsubscribe.html<BR><BR><BR>--9a3d815dd89d00c2af46ba9ee4991fc2de0b575529571a89e7fa2f8b42a9<BR>Content-Transfer-Encoding: quoted-printable<BR>Content-Type: text/html; charset=us-ascii<BR>Mime-Version: 1.0<BR><BR><!DOCTYPE html><BR><html lang=3D"en"><BR><head><BR> <meta charset=3D"utf-8"><BR> <meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D=<BR>1.0, user-scalable=3Dyes"><BR> <title>Perl Weekly Issue #769 - 2026-04-20 - What is dead this week?</tit=<BR>le><BR></head><BR><body><BR><BR><style><BR>* { text-align: left; }<BR>table {<BR> font-family: helvetica, arial, sans-serif;<BR> width: 700px;<BR>}<BR>-at-media (max-width: 800px) {<BR> table {<BR> width: 370px;<BR> }<BR>}<BR>p { margin: 1.2em 0em 1.35em 0em; line-height: 1.4em; }<BR>a { color: #04c; }<BR><BR>#menu {<BR> border-bottom: 1px solid #ccc;<BR>}<BR>#menu ul {<BR> text-align: center;<BR> margin: 0;<BR>}<BR>#menu li {<BR> font-size: 12px;<BR> display: inline;<BR> list-style-type: none;<BR> padding-right: 10px;<BR>}<BR><BR>#social_icons {<BR> margin-top: 10px;<BR>}<BR><BR></style><BR><BR><table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" align=3D"center" bg=<BR>color=3D"#ffffff"><BR><tr><td><BR> <p id=3D"logo"><BR> <a href=3D"https://perlweekly.com/" style=3D"<BR> background-color: #004065;<BR> color: #FFF;<BR> text-decoration: none;<BR> font-size: 40px;<BR> font-weight: bold;<BR> font-family: Gadget;<BR> =20<BR> border-radius: 5px;<BR> -moz-border-radius: 5px;<BR> -webkit-border-radius: 5px;<BR> border: 1px solid #000;<BR> padding: 10px;<BR> ">Perl Weekly</a><BR> =20<BR> </p><BR> <p id=3D"issue"<BR> style=3D"border-bottom: 1px solid #ccc;<BR> padding-bottom: 8px;<BR> font-size: 18px;"><BR> Issue #769 - 2026-04-20 - What is dead this week?<BR> </p><BR><BR> <a href=3D"https://perlweekly.com/latest.html">latest</a> | <a href=3D"=<BR>https://perlweekly.com/archive">archive</a> | edited by <a href=3D"https://=<BR>szabgab.com/">Gabor Szabo</a><BR><BR> =20<BR> <div><BR> This edition was made possible by the <a href=3D"https://www.patreo=<BR>n.com/szabgab">supporters of our cause</a>.<BR> </div><BR> =20<BR><BR> <div style=3D"text-align: center"><BR> You can <a href=3D"https://perlweekly.com/archive/769.html">read the ne=<BR>wsletter on the web</a>, if you prefer.<BR> </div><BR>=20<BR></td></tr><BR><BR><tr><td><BR> <table><BR> <tr><td><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Hi there,<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Every week I see a post declaring about something being dead. Agile=<BR> is dead! Testing is dead!, Algol-68 is dead! I am so fed-up with this. So =<BR>I am not going to link to the article that was discussing 5 dead programmin=<BR>g languages.<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Last week finally I got home and because of the flight I had to pos=<BR>tpone the <a href=3D"https://luma.com/perl-maven">Testing in Perl</a> event=<BR> so it will be held this Thursday. You are invited to <a href=3D"https://ac=<BR>ademy.code-maven.com/c/perl-testing-2026">watch the previous sessions</a> (=<BR>for now free of charge) and join the next one.<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> The <a href=3D"https://chat.whatsapp.com/LRrkZsSRDvGLLwppyLnKHy">Pe=<BR>rl Maven WhatsApp group</a> already has more than 70 members. Unfortunately=<BR> recently we got a few spammers so I had to turn on registration-approval. =<BR>This means that when you try to join I'll send you a private message asking=<BR> who you are. This is the little extra step we have to do to avoid spam. An=<BR>yway, you are invited to join us!<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Enjoy your week!<BR> </p><BR> =20<BR> <p style=3D"font-size: 14px"><BR> Your editor: Gabor Szabo.<BR> </p><BR> </td><BR> <td><BR> <img style=3D"right:0; bottom: 0;" src=3D"https://perlweekly.com/i=<BR>mg/gabor_szabo.png" /><BR> </td></tr><BR> </table><BR></td></tr><BR><BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"announcements" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Announcements</d=<BR>iv><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://news.perlfoundation.org/post/tprc-talk-de=<BR>adline" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">TPRC Talk Submission Deadline in 2 days!</a><BR> <br /> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"articles" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Articles</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/chansen/2026/04/fast=<BR>er-utf-8-validation.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Faster UTF-8 Validation</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/chansen/">Christian Hansen</a> (<a hre=<BR>f=3D"https://metacpan.org/author/CHANSEN">CHANSEN</a>) </s=<BR>pan> <p style=3D"font-size: 16px"><BR> Way more information about UTF-8 than I can fit in my head=<BR>.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/christian_hansen.png" title=3D"Christian Hansen" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://dev.to/lnationorg/enums-for-perl-adopting=<BR>-develcallparser-and-building-enumdeclare-28bj" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Enums for Perl: Adopting Devel::CallParser and Building=<BR> Enum::Declare</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/robert_acock/">Robert Acock</a> </span> =<BR> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/dean/2026/04/compili=<BR>ng-googleprotocolbuffersdynamic-on-debian-trixie.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Compiling Google::ProtocolBuffers::Dynamic on Debian Tr=<BR>ixie</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://fragfest.=<BR>com.au/">Dean Hamstead</a> (<a href=3D"https://meta=<BR>cpan.org/author/DJZORT">DJZORT</a>) </span> =<BR><p style=3D"font-size: 16px"><BR> For a long time I have been trying to encourage Perl Modul=<BR>e authors to include installation instruction when external libraries are n=<BR>eeded. Even if only for one or two Linux distributions. This information sh=<BR>ould be in the README of <a href=3D"https://github.com/mbarbon/google-proto=<BR>buf-dynamic">the project</a>.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/dean_hamstead.jpg" title=3D"Dean Hamstead" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/egor/2026/04/happy-s=<BR>haring.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Happy sharing</a><BR> <br /> <p style=3D"font-size: 16px"><BR> How to share memory between processes? A survey of a bunch=<BR> od Data::* modules.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.perl.com/article/making-an-asynchrono=<BR>us-clocking-drum-machine-in-perl/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Making an Asynchronous Clocking Drum Machine App in Per=<BR>l</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://ology.gi=<BR>thub.io/">Gene Boggs</a> (<a href=3D"https://metacp=<BR>an.org/author/GENE">GENE</a>) </span> <p sty=<BR>le=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/petamem/2026/04/rust=<BR>-pdl-part-two.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">PDL in Rust -- Part Two</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://www.peta=<BR>mem.com/">PetaMem</a> </span> <p style=3D"fo=<BR>nt-size: 16px"><BR> "The current PDL implementation in pperl covers roughly 3,=<BR>000 assertions end-to-end: about 1,400 on the Perl-facing connector side an=<BR>d about 1,600 on the engine side. As of this writing roughly 98% of the con=<BR>nector assertions match upstream PDL 2.103 exactly, and most of the remaini=<BR>ng couple of dozen we already know why they fail. By the time you read this=<BR> the numbers will have drifted a little in our favour - give or take - but =<BR>the shape is the point, not the decimal."<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"discussion" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Discussion</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.reddit.com/r/perl/comments/1sog0en/pa=<BR>rsing_a_csv_with_boms_in_every_line/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">parsing a csv with boms in every line</a><BR> <br /> <p style=3D"font-size: 16px"><BR> What kind of strange things people have to deal with?<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.reddit.com/r/perl/comments/1sn5he3/a_=<BR>curious_case_of_an_autovivified_env_var/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">A curious case of an autovivified env var</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/brian_d_foy/">brian d foy</a> (<a href=<BR>=3D"https://metacpan.org/author/BDFOY">BDFOY</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Should the documentation of autovivification be comprehens=<BR>ive?<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/brian_d_foy.png" title=3D"brian d foy" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"grants" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Grants</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://news.perlfoundation.org/post/maintaining_=<BR>perl_dave_mitchell_march_2026" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Maintaining Perl 5 Core (Dave Mitchell): March 2026</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Dave Mitchell </span> =<BR><p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://news.perlfoundation.org/post/pevans_core_=<BR>dev_march_2026" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">PEVANS Core Perl 5: Grant Report for March 2026</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://leonerds-=<BR>code.blogspot.com/">Paul Evans</a> (<a href=3D"http=<BR>s://metacpan.org/author/PEVANS">PEVANS</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/paul_evans.png" title=3D"Paul Evans" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://news.perlfoundation.org/post/maintaining_=<BR>perl_tonyc_march_2026" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Maintaining Perl (Tony Cook) March 2026</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Tony Cook (<a href=3D"https:/=<BR>/metacpan.org/author/TONYC">TONYC</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"perl" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Perl</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blogs.perl.org/users/psc/2026/04/this-wee=<BR>k-in-psc-220-2026-04-13.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">This week in PSC (221) | 2026-04-13</a><BR> <br /> <p style=3D"font-size: 16px"><BR> =20<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"the_weekly_challenge" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">The Weekly Chall=<BR>enge</div><BR> =20<BR> <p style=3D"font-size: 16px"><a href=3D"https://theweeklychalle=<BR>nge.org">The Weekly Challenge</a> by <a href=3D"https://manwar.org">Mohamma=<BR>d Sajid Anwar</a> will help you step out of your comfort-zone. You can even=<BR> win prize money of $50 by participating in the weekly challenge. We pick o=<BR>ne champion at the end of the month from among all of the contributors duri=<BR>ng the month, thanks to the sponsor Marc Perry.</p><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://theweeklychallenge.org/blog/perl-weekly-c=<BR>hallenge-370" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 370</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://manwar.o=<BR>rg/">Mohammad Sajid Anwar</a> (<a href=3D"https://m=<BR>etacpan.org/author/MANWAR">MANWAR</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Welcome to a new week with a couple of fun tasks "Popular =<BR>Word" and "Scramble String". If you are new to the weekly challenge then wh=<BR>y not join us and have fun every week. For more information, please read th=<BR>e <a href=3D"https://theweeklychallenge.org/faq">FAQ</a>.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/mohammad_anwar.png" title=3D"Mohammad Sajid Anwar" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://theweeklychallenge.org/blog/recap-challen=<BR>ge-369" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">RECAP - The Weekly Challenge - 369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://manwar.o=<BR>rg/">Mohammad Sajid Anwar</a> (<a href=3D"https://m=<BR>etacpan.org/author/MANWAR">MANWAR</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Enjoy a quick recap of last week's contributions by Team P=<BR>WC dealing with the "Valid Tag" and "Group Division" tasks in Perl and Raku=<BR>. You will find plenty of solutions to keep you busy.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/mohammad_anwar.png" title=3D"Mohammad Sajid Anwar" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://abigail.github.io/HTML/Perl-Weekly-Challe=<BR>nge/week-369-1.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 369: Valid Tag</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Abigail </span> <p sty=<BR>le=3D"font-size: 16px"><BR> This post provides multiple amazing examples of technical =<BR>versatility by providing a clean and direct solution written clearly in man=<BR>y different programming languages with tremendous flair, it shows great ele=<BR>gance in presenting the elegant and simple solution to the valid tag proble=<BR>m using the idiomatic language of each respective programming language. Abi=<BR>gail shows off expert level code writing skills by using the advanced chara=<BR>cter class arithmetic features present within Perl; these advanced ways of =<BR>manipulating strings show the efficiency of his coding style, while simulta=<BR>neously creating visually appealing code.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://abigail.github.io/HTML/Perl-Weekly-Challe=<BR>nge/week-369-2.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 369: Group Division</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Abigail </span> <p sty=<BR>le=3D"font-size: 16px"><BR> This post offers an extremely polished and versatile engin=<BR>eering design for the island program project. Abigail has shown advanced ex=<BR>pertise by using a 'chunk-and-fill' method over many different programming =<BR>languages (Perl, C, and less common languages such as sed, including detail=<BR>s on how string slices and fill-up strings can be done with the least amoun=<BR>t of impact. Furthermore, it highlights a creative use of string replicatio=<BR>n operators as well as very efficient use of loops that guarantee that the =<BR>final incomplete group will still have the correct amount of padding added =<BR>based on the requirements given in the challenge.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://raku-musings.com/tag-division.html" style=<BR>=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Tag Division</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://raku-mus=<BR>ings.com/">Arne Sommer</a> </span> <p style=<BR>=3D"font-size: 16px"><BR> In an idiomatic Raku implementation of the Group Division =<BR>problem, as shown pretty clearly here by Arne Sommer, the gather/take const=<BR>ruct is utilised nicely to collect the data clearly, and with the use of su=<BR>bstr-rw for in-place string manipulation and the replication operator (x) t=<BR>o add padding, the solution is both easily readable and aesthetically pleas=<BR>ing.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/arne-sommer.jpeg" title=3D"Arne Sommer" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.braincells.com/perl/2026/04/perl_week=<BR>ly_challenge_week_369.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge: Week 369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Jaldhar H. Vyas </span> =<BR> <p style=3D"font-size: 16px"><BR> By taking advantage of mathematical precision and the cris=<BR>pness of concise syntax through the use of "one liners", Jaldhar has develo=<BR>ped an efficient method for solving this problem, no matter if you're using=<BR> Raku or Perl. Calculating the required amount of padding to add to a split=<BR> string before actually splitting it, allows for quick and accurate results=<BR>. Furthermore, the clever application of native string manipulation functio=<BR>ns adds an additional level of efficiency and clarity to handling the group=<BR>ing logic.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://github.sommrey.de/the-bears-den/2026/04/1=<BR>7/ch-369.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Divided Tags</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://github.s=<BR>ommrey.de/">Jorg Sommrey</a> </span> <p styl=<BR>e=3D"font-size: 16px"><BR> This article offers a detailed examination of the many asp=<BR>ects of the "Valid Tag" challenge and provides a well-defined "word" in ord=<BR>er to enhance the accuracy of processing. The body of this technical paper =<BR>describes Jorg's unique application of the Perl programming language's abil=<BR>ity to utilise global regular expressions (regex) to solve Task 2; and also=<BR> the excellent "Shape" verb from the J programming language that has provid=<BR>ed an efficient and generalised way to reshape and pad multi-dimensional ar=<BR>rays.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://kolouch.net/perlweeklychallenge/blog-369.=<BR>html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge 369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Lubos Kolouch </span> =<BR><p style=3D"font-size: 16px"><BR> In this post, we look at the approach both challenges in a=<BR> disciplined and structured manner. The focus is on having code that is eas=<BR>y to maintain and easy to read. We have examples showing clean, modular Per=<BR>l and Python code, and show examples of how the "Group Division" challenge =<BR>is solved using efficient use of list slicing and using generator expressio=<BR>ns to partition and pad strings in a method that's worthy of professional q=<BR>uality.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://fluca1978.github.io/2026/04/13/PerlWeekly=<BR>Challenge369.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">string indexes</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://fluca1978=<BR>.blogspot.com">Luca Ferrari</a> </span> <p s=<BR>tyle=3D"font-size: 16px"><BR> Luca Ferrari exhibits an incredible degree of technical ab=<BR>ility through his creation of five unique environments in which to accompli=<BR>sh the Week 369 challenges. Those five programming environments are: Raku, =<BR>Python, PostgreSQL (PL/Perl, PL/PgSQL, and PL/Java). Luca's elegant use of =<BR>Raku's rotor method combined with the ability of Python's list slicing to a=<BR>chieve the same complex logic for string padding and partitioning, as demon=<BR>strated in his application of The Group Division challenge, show how many d=<BR>ifferent programming languages can utilise very diverse methods to accompli=<BR>sh the same technically precise logic.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://wlmb.github.io/2026/04/13/PWC369/" style=<BR>=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://wlmb.git=<BR>hub.io/">W Luis Mochan</a> </span> <p style=<BR>=3D"font-size: 16px"><BR> The post demonstrates exceptional compact Perl programming=<BR> by distilling complex string processing procedures into "1.5-liners" that =<BR>are quite efficient. For Task 1, he builds camelCase tags from a string of =<BR>input values using the split, map, and join functions in order to achieve t=<BR>he desired result in one pass. In addition, Luis's approach to Task 2 makes=<BR> use of a brilliant "alternation" regex (.{$size}|.+) as a means of capturi=<BR>ng both full and partial segments of an input string in an optimal manner. =<BR>The use of this regex allows him to create direct array-index padding, resu=<BR>lting in code that is not only concise, but also very technically accurate =<BR>and well-balanced between the two principles.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/luis-mochan.jpeg" title=3D"W Luis Mochan" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://github.com/MatthiasMuth/perlweeklychallen=<BR>ge-club/tree/muthm-369/challenge-369/matthias-muth#readme" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Good Tags and Good Chunks</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Matthias Muth </span> =<BR><p style=3D"font-size: 16px"><BR> Matthias Muth has written an impressive article on interna=<BR>tionalisation (I18N) relating to pragmatic problem solving while still main=<BR>taining a strong long-term support model through thoughtful design choices =<BR>such as those found within both the "Valid Tag" and "Group Division" soluti=<BR>ons provided by Matthias's book. The use of the Text::Unidecode module was =<BR>one way to create technically superior solutions that would accommodate for=<BR> the presence of non-ASCII character sets and would also adhere to the rule=<BR>s specified in the challenge itself (e.g., valid tag). Additionally, his so=<BR>lution for "Group Division" is equally amazing because he accomplished this=<BR> via a mathematical pad for the purpose of executing a clean single regex g=<BR>lobal match - or a single line of functional code - that could otherwise be=<BR> accomplished via several iterations of code.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://packy.dardan.com/b/nR" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Strings Will Tear Us Apart</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/packy_anderson/">Packy Anderson</a> (<=<BR>a href=3D"https://metacpan.org/author/PACKY">PACKY</a>) </=<BR>span> <p style=3D"font-size: 16px"><BR> In this post, Packy gives a thorough, contemporary example=<BR> of string handling in Raku, Perl, Python, and Elixir. He creates a unique =<BR>solution to the "Group Division" challenge by using the Raku function .comb=<BR> with integer arguments to automatically divide into chunks and by using th=<BR>e Perl 'unpack' function with a per-function constructed template, demonstr=<BR>ating how you can creatively employ language idioms to efficiently and effe=<BR>ctively resolve a common programming issue and provide a solution for data =<BR>partitioning that uses little or minimal resources.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/packy-anderson.jpeg" title=3D"Packy Anderson" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"http://ccgi.campbellsmiths.force9.co.uk/challenge=<BR>/369" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Fun with strings</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://ccgi.camp=<BR>bellsmiths.force9.co.uk/">Peter Campbell Smith</a> </span>=<BR> <p style=3D"font-size: 16px"><BR> In his article, Peter presents a practical and polished ap=<BR>proach to developing an order of operations for the sanitisation of strings=<BR>. By organising the procedure so that lower case, regular expression charac=<BR>ter removal, and space & character combination are completed before the cre=<BR>ation of camelCase, the end product meets the requirements for both camel c=<BR>ase formatting as well as length requirements while still producing clean, =<BR>effective code.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/peter-campbell-smith.png" title=3D"Peter Campbell Smith" width=3D"80"=<BR> /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://reiniermaliepaard.nl/pwc/index.php?id=3Dp=<BR>wc369-1" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 369: Valid Tag</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Reinier Maliepaard </span> =<BR> <p style=3D"font-size: 16px"><BR> In Reinier's method, a model for defensive programming has=<BR> been developed that features validation of input for real alphabetic value=<BR>s before processing. Also, he has taken a somewhat technical approach (tran=<BR>sforming input to remove non-letter characters by converting them to spaces=<BR> in order to apply camelCase correctly while keeping word boundaries intact=<BR>) through his use of multiple accurately readable regular expressions.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://reiniermaliepaard.nl/pwc/index.php?id=3Dp=<BR>wc369-2" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 369: Group Division</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Reinier Maliepaard </span> =<BR> <p style=3D"font-size: 16px"><BR> Reinier has created a very good tutorial solution which sh=<BR>owcases how to use the "Perl 4-argument substr function" to extract and rem=<BR>ove data from a string using a while loop to do so iteratively and then usi=<BR>ng string replication for the final padding makes the code extremely readab=<BR>le and a great technical example of using efficient in-place usage of strin=<BR>gs.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://hatley-software.blogspot.com/2026/04/robb=<BR>ie-hatleys-solutions-in-perl-for_16.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge #369</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://hatley-s=<BR>oftware.blogspot.com/">Robbie Hatley</a> </span> =<BR> <p style=3D"font-size: 16px"><BR> The work done by Robbie within the "Valid Tag" review indi=<BR>cates a very well thought out way to approach hyphenated compound words as =<BR>a single entity for case adjustment, in addition to providing an innovative=<BR> solution for "Group Division", by utilising the four-argument form of Perl=<BR>'s substr in order to easily "chop and fill" strings, while also demonstrat=<BR>ing his superior knowledge of high-performance string manipulation.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://blog.firedrake.org/archive/2026/04/The_We=<BR>ekly_Challenge_369__Divided_Validity.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Divided Validity</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blog.fir=<BR>edrake.org/">Roger Bell West</a> (<a href=3D"https:=<BR>//metacpan.org/author/FIREDRAKE">FIREDRAKE</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Roger's technical review offers an interesting side-by-sid=<BR>e comparison of various string handling paradigms from multiple programming=<BR> languages. The "Valid Tag" part of the review shows how Crystal's highly p=<BR>erformant state machine implementation allows for case conversion to be acc=<BR>omplished in a single pass. The "Group Division" analysis of in_groups_of()=<BR> in Crystal is very interesting as well, as it illustrates just how compact=<BR> that library function is compared to typical iterative slicing found in Ty=<BR>pst, demonstrating that using built-in library functions can greatly simpli=<BR>fy the implementation of algorithmic logic through less code complexity.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://dev.to/simongreennet/weekly-challenge-gro=<BR>up-tag-k56" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Group Tag</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://dev.to/s=<BR>imongreennet">Simon Green</a> (<a href=3D"https://m=<BR>etacpan.org/author/SGREEN">SGREEN</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> A wonderful illustration of Test-driven development is Sim=<BR>on's critique of Challenge 369. He found through tests that the sanitisatio=<BR>n step of "Valid Tag", had to be completed before performing case formattin=<BR>g so that example 5 is handled properly. He also provides useful technical =<BR>comparisons between both languages' ecosystem strengths, such as Python usi=<BR>ng more_itertools.grouper vs Perl doing it manually by iteration.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/simon-green.png" title=3D"Simon Green" width=3D"80" /><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"weekly_collections" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Weekly collectio=<BR>ns</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"http://niceperl.blogspot.com/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">NICEPERL's lists</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"http://niceperl.=<BR>blogspot.com/">Miguel Prz</a> (<a href=3D"https://m=<BR>etacpan.org/author/NICEPERL">NICEPERL</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> <a href=3D"https://niceperl.blogspot.com/2026/04/dxcvi-9-g=<BR>reat-cpan-modules-released.html">Great CPAN modules released last week</a>.<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"events" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Events</div><BR> =20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://luma.com/perl-maven" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Maven online: Testing in Perl - part 4</a><BR> <br /> <p style=3D"font-size: 16px"><BR> April 23, 2026<BR> </p><BR> =20<BR> </div><BR> =20<BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> <tr><td><BR> <table style=3D"width:100%"><tr><td><BR> <div<BR> =20<BR> ><BR> <p style=3D"margin-left: 1.5em;"><BR> <a href=3D"https://www.perl</TD> </tr> </table> </TD> </tr> <tr> <TD><img ALT='' src="/images/main_horizontalline.gif" WIDTH="460" HEIGHT="4" VSPACE="8"></TD> </tr> <tr><TD><P><OL><LI><B><A HREF='./messages.html?id=554678&archive=2026-04-01' CLASS='header'>2026-04-02 Ruben Safir <mrbrklyn-at-panix.com> Re: [Hangout - NYLXS] [NYLXS - HANGOUT] Happy Rosh Hashona </A></B></LI><LI><B><A HREF='./messages.html?id=554679&archive=2026-04-01' CLASS='header'>2026-04-02 Ruben Safir <mrbrklyn-at-panix.com> Re: [Hangout - NYLXS] [NYLXS - HANGOUT] Happy Rosh Hashona </A></B></LI><LI><B><A HREF='./messages.html?id=554680&archive=2026-04-01' CLASS='header'>2026-04-01 From: "Free Software Foundation" <info-at-fsf.org> Subject: [Hangout - NYLXS] =?utf-8?q?Free_Software_Supporter_=E2=80=94_Is?= </A></B></LI><LI><B><A HREF='./messages.html?id=554681&archive=2026-04-01' CLASS='header'>2026-04-01 From: "Free Software Foundation" <info-at-fsf.org> Subject: [Hangout - NYLXS] =?utf-8?q?Free_Software_Supporter_=E2=80=94_Is?= </A></B></LI><LI><B><A HREF='./messages.html?id=554682&archive=2026-04-01' CLASS='header'>2026-04-06 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] Flying to the moon </A></B></LI><LI><B><A HREF='./messages.html?id=554683&archive=2026-04-01' CLASS='header'>2026-04-13 Gabor Szabo <gabor-at-szabgab.com> Subject: [Hangout - NYLXS] [Perlweekly] #768 - Perl and XS </A></B></LI><LI><B><A HREF='./messages.html?id=554684&archive=2026-04-01' CLASS='header'>2026-04-14 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] the war on scp </A></B></LI><LI><B><A HREF='./messages.html?id=554685&archive=2026-04-01' CLASS='header'>2026-04-14 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] [ruben-at-mrbrklyn.com: [artix-general] The war on </A></B></LI><LI><B><A HREF='./messages.html?id=554686&archive=2026-04-01' CLASS='header'>2026-04-17 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] Bird Lights </A></B></LI><LI><B><A HREF='./messages.html?id=554687&archive=2026-04-01' CLASS='header'>2026-04-17 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] Bird Lights </A></B></LI><LI><B><A HREF='./messages.html?id=554688&archive=2026-04-01' CLASS='header'>2026-04-17 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] green eggs and ham.. </A></B></LI><LI><B><A HREF='./messages.html?id=554689&archive=2026-04-01' CLASS='header'>2026-04-20 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] NY Times at Work rewriting Muslim Fanastism in </A></B></LI><LI><B><A HREF='./messages.html?id=554690&archive=2026-04-01' CLASS='header'>2026-04-20 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] Ukrainian Killer Robots </A></B></LI><LI><B><A HREF='./messages.html?id=554691&archive=2026-04-01' CLASS='header'>2026-04-20 Gabor Szabo <gabor-at-szabgab.com> Subject: [Hangout - NYLXS] [Perlweekly] #769 - What is dead this week? </A></B></LI><LI><B><A HREF='./messages.html?id=554692&archive=2026-04-01' CLASS='header'>2026-04-22 Marc Randazza <mjr-at-randazza.com> Re: [Hangout - NYLXS] NY for Fair Use </A></B></LI><LI><B><A HREF='./messages.html?id=554693&archive=2026-04-01' CLASS='header'>2026-04-22 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] We will have to seal off California </A></B></LI><LI><B><A HREF='./messages.html?id=554694&archive=2026-04-01' CLASS='header'>2026-04-24 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] NY for Fair Use </A></B></LI><LI><B><A HREF='./messages.html?id=554695&archive=2026-04-01' CLASS='header'>2026-04-25 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] For those that would defend Iran </A></B></LI><LI><B><A HREF='./messages.html?id=554696&archive=2026-04-01' CLASS='header'>2026-04-26 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Hangout - NYLXS] Fwd: El Al ref - 2026 - 6072976 - LY007/04Mar26 </A></B></LI><LI><B><A HREF='./messages.html?id=554697&archive=2026-04-01' CLASS='header'>2026-04-26 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554698&archive=2026-04-01' CLASS='header'>2026-04-26 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554699&archive=2026-04-01' CLASS='header'>2026-04-26 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554700&archive=2026-04-01' CLASS='header'>2026-04-26 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554701&archive=2026-04-01' CLASS='header'>2026-04-26 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554702&archive=2026-04-01' CLASS='header'>2026-04-26 Ruben Safir <mrbrklyn-at-panix.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554703&archive=2026-04-01' CLASS='header'>2026-04-27 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] Indian Jews... no kidding </A></B></LI><LI><B><A HREF='./messages.html?id=554704&archive=2026-04-01' CLASS='header'>2026-04-27 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] Mamdani and the working man </A></B></LI><LI><B><A HREF='./messages.html?id=554705&archive=2026-04-01' CLASS='header'>2026-04-28 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554706&archive=2026-04-01' CLASS='header'>2026-04-28 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554707&archive=2026-04-01' CLASS='header'>2026-04-27 Gabor Szabo <gabor-at-szabgab.com> Subject: [Hangout - NYLXS] [Perlweekly] #770 - Yet Another Test Harness </A></B></LI><LI><B><A HREF='./messages.html?id=554708&archive=2026-04-01' CLASS='header'>2026-04-28 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554709&archive=2026-04-01' CLASS='header'>2026-04-28 Aviva <aviva-at-gmx.us> Re: [Hangout - NYLXS] amicus pairing </A></B></LI><LI><B><A HREF='./messages.html?id=554710&archive=2026-04-01' CLASS='header'>2026-04-29 Guggenheim New York <rsvp-at-guggenheim.org> Subject: [Hangout - NYLXS] Reminder Invitation: Celebration of Students </A></B></LI><LI><B><A HREF='./messages.html?id=554711&archive=2026-04-01' CLASS='header'>2026-04-29 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Hangout - NYLXS] Anti-Semtic bigots running the Park Slope Food </A></B></LI></OL></P></TD></tr> <tr> <TD><SPAN Class="header">NYLXS are Do'ers and the first step of Doing is Joining! Join NYLXS and make a difference in your community today!</SPAN></TD> </tr> <tr> <TD><img ALT='' src="/images/main_horizontalline.gif" WIDTH="460" HEIGHT="4" VSPACE="8"></TD> </tr> <tr> <TD><img ALT='' src="/images/spacer.gif" WIDTH="1" HEIGHT="8"></TD> </tr> </table> <!--second table callouts or /includes--> </TD> </tr> </table> </TD> </tr> </table> </TD> </tr> </table> <!--third table closing rules--> <!--end of stack content tables--> <!--close 3 column table--> </DIV> </BODY> </SCRIPT> </HTML>