Wed May 27 22:50:38 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-27
FROM Gabor Szabo
SUBJECT Subject: [Hangout - NYLXS] [Perlweekly] #770 - Yet Another Test Harness
From hangout-bounces-at-nylxs.com Tue Apr 28 16:48:52 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 9B3F7164106;
Tue, 28 Apr 2026 16:48:50 -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 8993B164103; Tue, 28 Apr 2026 16:48:45 -0400 (EDT)
Resent-From: Ruben Safir
Resent-Date: Tue, 28 Apr 2026 16:48:45 -0400
Resent-Message-ID: <20260428204845.GA509-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.wfbtzbpn.outbound-mail.sendgrid.net
(s.wfbtzbpn.outbound-mail.sendgrid.net [159.183.235.50])
(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 305E71640FB
for ; Mon, 27 Apr 2026 04:06:28 -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=1777277187; bh=uqhTdZFMcZ6HtoMUVQ1QfA4995VesBeRWyCxquiIhd0=;
b=a8zD9PbFLiyvxEnP6Ubn2k6K+d4HYQ0/WTNFN18tEagtsi26CTWIrJQ/F6/s4u9FFVg9
2sH71Uee3X+fuaIDbKUpw+9S9NED6FMyOrBLaXJa5eyHO/r6U7RMfq0a9dQN1ivEk4H3yi
5jaij02d203mstT2N9yzslLg2dtF/vECOXpAp3XusurjU7ikB10BAKGbyLheUocxRw8r7p
dcT1YWWSBI60A39Bf+/tj+jlGO6K2B5W03dloyrjvGBvv9YyDVhIxozdCtKHAKbs1/s/Nc
3WSgxjMRF+d9M+MV7JGDZzc+s85+ci/kEKoDrLC27HoYr/Xf06ZmIsiVrQ5w+iLA==
Received: by recvd-555c99f57f-ctk52 with SMTP id
recvd-555c99f57f-ctk52-1-69EF1903-1
2026-04-27 08:06:27.009282368 +0000 UTC m=+468496.733618685
Received: from MjA0MzMyMDc (unknown) by geopod-ismtpd-7 (SG) with HTTP
id VuLI93QHS7231LeNF2DhTA Mon, 27 Apr 2026 08:06:26.959 +0000 (UTC)
Date: Mon, 27 Apr 2026 08:06:27 +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=2F6ApM=2FQpCIA7zpwGNdIu+etcl3wbxhgHeW9k?=
=?us-ascii?Q?ZLUPVYw6p9HtsSNCIzt2pzf6XfX14YB1ffBGQa7?=
=?us-ascii?Q?ELrIZnA3WxyZqnEmQu6dCPZb3YpEdTL1K5cYwDC?=
=?us-ascii?Q?i5cvxz3ifB2pCqmvxEzL0Uah7ELzZvWsH=2FMhOew?=
=?us-ascii?Q?Q=3D=3D?=
To: ruben-at-mrbrklyn.com
X-Entity-ID: u001.JvYq+PmxR+Jk4HAvLs9YyA==
Subject: [Hangout - NYLXS] [Perlweekly] #770 - Yet Another Test Harness
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="===============1024478777=="
Errors-To: hangout-bounces-at-nylxs.com
Sender: "Hangout"

--===============1024478777==
Content-Type: multipart/alternative; boundary=5879958dd419df7ce8009e3645afd23ab91453ab2ca2097240bff5622dfc

--5879958dd419df7ce8009e3645afd23ab91453ab2ca2097240bff5622dfc
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=utf-8
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/770.html



Hi there,

I like to believe that I belong to the old school of testing i.e.
Test::More ( https://metacpan.org/pod/Test::More ). That being said, every
now and then I come across a magical test workflow. One of them is
App::Yath ( https://metacpan.org/pod/App::Yath ). The biggest and pleasant
surprise is that both were presented by none other than Chad
Granum
. Although I love the idea, I find it hard to adapt to it. I
have to force myself otherwise it won't happen. I wrote a short blog post (
https://theweeklychallenge.org/blog/testing-in-perl ) as a reminder to
myself while working on this editorial. I can refer to it next time I am
changing existing code or adding new code.

Speaking of testing, Herbert Breunung shared a blog post (
https://blogs.perl.org/users/lichtkind/2026/04/who-tests-the-tester-me.html
) explaining how Test::Builder helped him create his own
test suite. This reminded me how I did exactly that in
2010 to create Test::Map::Tube (
https://metacpan.org/pod/Test::Map::Tube ) for my routing framework,
Map::Tube ( https://metacpan.org/pod/Map::Tube ). It makes me feel quite
old now!

Enjoy rest of the newsletter.

--
Your editor: Mohammad Sajid Anwar.


Announcements

=20
The London Perl and Raku Workshop 2026
https://www.londonperlworkshop.com/news#News-2026-04-27
=20
Just a heads up: The next LPW is planned to be in November 2026.
--------------

=20
PPC Summer 2026 - Call for Participation!
https://blogs.perl.org/users/oodler_577/2026/04/ppc-summer-2026---call-fo=
r-participation.html
=20
Brett Estrade, who is a member of the Perl Community Conference (PPC)
organising committee, has released a call for participants for the Summer
2026 PPC. He notes the group's success in the areas of scientific
research and community building through the use of independent Perl
conferences and asks for speakers to submit proposals to present their
work via the Papercall system to help keep the momentum going.
--------------

=20

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

Articles

=20
Who tests the tester? Me !!!
https://blogs.perl.org/users/lichtkind/2026/04/who-tests-the-tester-me.ht=
ml
=20
In the article, Lichtkind shows how to apply the Test::Builder::Tester
module to check your own test functions for correctness. He shares
real-life example of using the is_tuple() function that he has developed
to aid in creating a test for the GTC project.
--------------

=20
This week in PSC (222) | 2026-04-25
https://blogs.perl.org/users/psc/2026/04/this-week-in-psc-222-2026-04-25.=
html
=20
Ihe Perl Steering Council got together at the 2026 Perl Toolchain Summit
(Vienna). During this meeting, the group discussed the current status of
Perl 5.44. Most blockers have been resolved and EOL workflow has been put
in place. Finalisation of details for the next stable release is
currently taking place.
--------------

=20
Importance of Repositories in Public
https://blogs.perl.org/users/mikko_koivunalho/2026/04/importance-of-repos=
itories-in-public.html
=20
In this blog post, Mikko argues that keeping project repositories publicl=
y
accessible is an important practice even when no new contributions are
anticipated. Having a project public on GitHub preserves historical
context, serves as an example of quality work for others, and provides a
source of useful data for the open-source community.
--------------

=20
AI as a Chance - Opinion
https://blogs.perl.org/users/petamem/2026/04/ai-as-a-chance.html
=20
In this article PetaMem discussed how through AI we will have access to n=
ew
ways to enhance our creative processes (as opposed to replacing them),
through developing a partnership with AI; allowing developers and
creators alike use the technology of AI to automate repetitive processes
and create opportunities for problems to be solved and new ideas
developed through creative innovation.
--------------

=20

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

Discussion

=20
AI Contributions to CPAN: The Copyright Question
https://blogs.perl.org/users/todd_rinaldo/2026/04/ai-contributions-to-cpa=
n-the-copyright-question.html
=20
In his article, Todd explores some of the legal issues surrounding code
that is generated by AI and available through CPAN, and whether or not
these AI-generated contributions are eligible for copyright protection
and/or a legal license. He also cautions maintainers about the use of
black box LLMs, which do not make public their training data, and
encourages the Perl community to develop guidelines for the proper
protection of the Perl software ecosystem from future disputes arising
from improper use of code generated by LLMs.
--------------

=20

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

Web

=20
Use Your Powers Only for Good, Clark
https://blog.dave.org.uk/2026/04/use-your-powers-only-for-good-clark.html
=20
Dave dissects a really good looking SPAM email made by an AI LLM to show =
us
all how the world will look in future with AI created outreach. Even
though the spam had accurately scraped Dave's background and book titles,
Dave believes that this creates the illusion of understanding but does
not demonstrate the LLM has any real knowledge of either Dave's values or
business model. Dave further states that this type of outreach is now
cheaper and easier than ever though the deployment of AI to create large
amounts of unsolicited SPAM.
--------------

=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 - 371
https://theweeklychallenge.org/blog/perl-weekly-challenge-371
=20
Welcome to a new week with a couple of fun tasks "Missing Letter" and
"Subset Equilibrium". 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 - 370
https://theweeklychallenge.org/blog/recap-challenge-370
=20
Enjoy a quick recap of last week's contributions by Team PWC dealing with
the "Popular Word" and "Scramble String" tasks in Perl and Raku. You will
find plenty of solutions to keep you busy.
--------------

=20
Perl Weekly Challenge 370: Popular Word
https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-370-1.html
=20
Abigail offers a superb example of processing text for the "Popular Word"
task using the ability of Perl's regex engine to process words without
considering case and complex punctuation marks. This solution is unique
because it demonstrates a high-performance solution for filtering out
banned words while maintaining concise and easily readable code.
--------------

=20
Perl Weekly Challenge 370: Scramble String
https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-370-2.html
=20
Abigail used a clever recursive method to take on the challenge of the
"Scramble String" problem. The use of clear base cases and logic to
explore possible points to split and swap all contribute to the final
solution being an excellent example of how to solve complex problems with
string transformations, using a valid solution and providing a framework
that can be used to solve other complex problems involving string
transformations.
--------------

=20
Popular Scramble
https://raku-musings.com/popular-scramble.html
=20
Arne's experience in comparing Raku's expressive power vs. Perl with
respect to the solutions of these two challenges are at the heart of this
review. He also demonstrates how to use Raku's built-in Bag and Any types
to simplify complex logic with clean, idiomatic code. This article is a
great reference for developers who want to learn how to use modern
functional programming patterns effectively.
--------------

=20
PWC 370 Scramble On, Scramblin' Man
https://dev.to/boblied/pwc-370-scramble-on-scramblin-man-5god
=20
Bob has created a detailed breakdown of the Scramble String problem,
looking at the need to use memoisation to avoid redundantly calculating
recursive algorithms. Bob has developed a very clearly constructed
solution to the Scramble String problem using test-first development
which is a perfect demonstration of how to keep performance and
readability on complex branching logic.
--------------

=20
Perl Weekly Challenge: Week 370
https://www.braincells.com/perl/2026/04/perl_weekly_challenge_week_370.ht=
ml
=20
In this article, there is a thorough comparison made between two language=
s:
Perl and Raku. The many modern capabilities of Raku, such as having a Bag
data structure and being natively supportive of methods for manipulating
strings, resulted in solving the stated problem while producing
significantly less code than what is generated by using Perl to do the
same thing.
--------------

=20
Scrambled Bans
https://github.sommrey.de/the-bears-den/2026/04/24/ch-370.html
=20
J=C3=B6rg has concentrated his efforts solely on providing a high quality=
Perl
solution to this challenge. The way he solves "Scramble String" is
especially impressive because he uses a recursive solution that processes
challenging partitioning and swapping of strings, using clean and
idiomatic Perl programming.
--------------

=20
Perl Weekly Challenge 370
https://wlmb.github.io/2026/04/20/PWC370/
=20
W. Luis Moch=C3=A1n offers a mathematically rigorous and elegant take on
Challenge 370 using Perl. For Task 1, he utilises a compact approach by
normalising the input with lc and regex, then applying a frequency count.
His review is particularly positive about the clarity and efficiency of
using a single hash to filter out banned words while identifying the
maximum frequency in one pass. For Task 2, he implements a recursive
solution and highlights the technical necessity of caching results to
avoid the exponential growth of possibilities in longer strings.
--------------

=20
Scrambling Back and Forth
https://github.com/MatthiasMuth/perlweeklychallenge-club/tree/muthm-370/c=
hallenge-370/matthias-muth#readme
=20
Matthias's submission for Task 1, he has used a concise and efficient
one-liner with List::UtilsBy::max_by to count how many times words appear
and in doing so stores a reference to the 'most popular' result while
processing all results in a single pass. With respect to Task 2, Matthias
did not limit himself to performing a simple recursive search as in
previous weeks; however, he developed a Reverse Scramble algorithm, which
is performing this task as a sequence of sorting in which strings become
indexes of streaks representing their sorted order to allow for efficient
verification of scrambling operations performed.
--------------

=20
The scramble can not stop you / from becoming popu-ler=E2=80=A6 lar
https://packy.dardan.com/b/nb
=20
Packy's polyglot Challenge 370 features solid code samples in Perl, Raku,
Python, and Elixir that showcase how to solve the problem multiple ways
using different programming languages. He shows how using Elixir's pipe
operator or Raku's Bag can help efficiently transform and filter the
paragraph from "Most Popular Word". He also demonstrates a consistent,
recursive approach to solving the problem using the same recursive logic,
with code examples in each of the four languages, while adapting to the
specific syntax and idioms of each language, in his example "Scramble
String".
--------------

=20
Words and more words
http://ccgi.campbellsmiths.force9.co.uk/challenge/370
=20
Peter implements a clean regular expression approach to normalising the
text and eliminating any banned words in Popular Word, while also
provides a completely recursive solution in Scramble String that clearly
demonstrates splitting and swapping parts of the string in order to
illustrate the property of being scrambled.
--------------

=20
The Weekly Challenge - 370: Popular Word
https://reiniermaliepaard.nl/pwc/index.php?id=3Dpwc370-1
=20
Reinier solution includes a simple regular expression to remove punctuati=
on
characters and a hash to count the number of occurrences of each valid
word. This makes it easy to identify the most frequently used word that
is not on a banned list, and provides an easily readable model from which
to analyze text.
--------------

=20
The Weekly Challenge - 370: Scramble String
https://reiniermaliepaard.nl/pwc/index.php?id=3Dpwc370-2
=20
Reinier's demonstrates pruning as an optimisation technique. If the
characters sorted for both strings do not match (meaning they are not
anagrams), the function returns false without going through all remaining
recursive levels.
--------------

=20
The Weekly Challenge #370
https://hatley-software.blogspot.com/2026/04/robbie-hatleys-solutions-in-=
perl-for_24.html
=20
Robbie's high-performance Perl solutions employ algorithmic efficiency an=
d
strong input validation. In Task 1, he uses a fast normalisation method
along with a hash-based frequency counting scheme to isolate the most
popular word. In Task 2, Robbie's "Scramble String" implementation is
notable for being a recursive Divide-and-Conquer strategy, providing an
additional speedup by implementing a pre-check anagram filter to
eliminate expensive recursive calls to incompatible strings.
--------------

=20
Popular Scramble
https://blog.firedrake.org/archive/2026/04/The_Weekly_Challenge_370__Popu=
lar_Scramble.html
=20
Roger shown how to use a specialised programming tool like Counter in Rus=
t
to find popular words with only a few lines of code. In addition, the
example in PostScript is an interesting concept as it shows how to create
a counted hash from scratch using the examples provided in the Rust
program as a reference.
--------------

=20
Popular Scrambling
https://dev.to/simongreennet/weekly-challenge-popular-scrambling-2bba
=20
Simon demonstrates Task 1 by methodically normalising strings and countin=
g
strings using hashes in order find the word with the highest occurrence.
His solution for Task 2 highlights the use of recursion when solving the
problem, and optimises by checking if two strings are anagrams with a
"fail-fast" method; this way, all non-anagrams can be filtered out before
going through the more complex process of recursion.
--------------

=20

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

Perl Tutorial
A section for newbies and for people who need some refreshing of their Perl
knowledge. If you have questions or suggestions about the articles, let
me know and I'll try to make the necessary changes. The included articles
are from the Perl Maven Tutorial ( https://perlmaven.com/perl-tutorial )
and are part of the Perl Maven eBook ( https://leanpub.com/perl-maven ).
=20
Testing in Perl
https://perlmaven.com/perl-testing/
=20
The 'slides' with all the examples that are used in the online course.
--------------

=20

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

Rakudo

=20
2026.16 Selkie TUI Framework
https://rakudoweekly.blog/2026/04/21/2026-16-selkie-tui-framework/
=20
=20
--------------

=20

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

Training

=20
Testing in Perl
https://academy.code-maven.com/c/perl-testing-2026
=20
While we are still recording the live sessions (
https://luma.com/perl-maven ) of the Testing in Perl you can also
watch the previous episodes on the Code Maven Academy web site. Usually
it is for paying subscribers only, but for the next couple of day you can
still access it free of charge. You only need to register on the web
site.
--------------

=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/dxcvii-19-great-cpan-modules-releas
ed.html ).
--------------

=20

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

Events

=20
Perl Maven online: Testing in Perl - part 5
https://luma.com/perl-maven
=20
April 30, 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


--5879958dd419df7ce8009e3645afd23ab91453ab2ca2097240bff5622dfc
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=utf-8
Mime-Version: 1.0





1.0, user-scalable=3Dyes">
Perl Weekly Issue #770 - 2026-04-27 - Yet Another Test Harness</ti=<BR>tle><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 #770 - 2026-04-27 - Yet Another Test Harness<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>manwar.org/">Mohammad Sajid Anwar</a><BR><BR> =20<BR> <div><BR> This edition was made possible by the <a href=3D"https://www.patreo=<BR>n.com/manwar">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/770.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> I like to believe that I belong to the old school of testing i.e. <=<BR>a href=3D"https://metacpan.org/pod/Test::More">Test::More</a>. That being s=<BR>aid, every now and then I come across a magical test workflow. One of them =<BR>is <a href=3D"https://metacpan.org/pod/App::Yath">App::Yath</a>. The bigges=<BR>t and pleasant surprise is that both were presented by none other than <str=<BR>ong>Chad Granum</strong>. Although I love the idea, I find it hard to adapt=<BR> to it. I have to force myself otherwise it won't happen. I wrote a short <=<BR>a href=3D"https://theweeklychallenge.org/blog/testing-in-perl">blog post</a=<BR>> as a reminder to myself while working on this editorial. I can refer to i=<BR>t next time I am changing existing code or adding new code.<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Speaking of testing, <strong>Herbert Breunung</strong> shared a <a =<BR>href=3D"https://blogs.perl.org/users/lichtkind/2026/04/who-tests-the-tester=<BR>-me.html">blog post</a> explaining how <strong>Test::Builder</strong> helpe=<BR>d him create his own test suite. This reminded me how I did exactly that in=<BR> <strong>2010</strong> to create <a href=3D"https://metacpan.org/pod/Test::=<BR>Map::Tube">Test::Map::Tube</a> for my routing framework, <a href=3D"https:/=<BR>/metacpan.org/pod/Map::Tube">Map::Tube</a>. It makes me feel quite old now!<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Enjoy rest of the newsletter.<BR> </p><BR> =20<BR> <p style=3D"font-size: 14px"><BR> Your editor: Mohammad Sajid Anwar.<BR> </p><BR> </td><BR> <td><BR> <img style=3D"right:0; bottom: 0;" src=3D"https://perlweekly.com/i=<BR>mg/mohammad_anwar.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://www.londonperlworkshop.com/news#News-2026=<BR>-04-27" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The London Perl and Raku Workshop 2026</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Andrew Mehta (<a href=3D"http=<BR>s://metacpan.org/author/AJMETZ">AJMETZ</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Just a heads up: The next LPW is planned to be in November=<BR> 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://blogs.perl.org/users/oodler_577/2026/04/p=<BR>pc-summer-2026---call-for-participation.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">PPC Summer 2026 - Call for Participation!</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/oodler_577/">Brett Estrade</a> (<a hre=<BR>f=3D"https://metacpan.org/author/OODLER">OODLER</a>) </spa=<BR>n> <p style=3D"font-size: 16px"><BR> Brett Estrade, who is a member of the Perl Community Confe=<BR>rence (PPC) organising committee, has released a call for participants for =<BR>the Summer 2026 PPC. He notes the group's success in the areas of scientifi=<BR>c research and community building through the use of independent Perl confe=<BR>rences and asks for speakers to submit proposals to present their work via =<BR>the Papercall system to help keep the momentum going.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/brett_estrade.png" title=3D"Brett Estrade" 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"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/lichtkind/2026/04/wh=<BR>o-tests-the-tester-me.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Who tests the tester? Me !!!</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/lichtkind/">Herbert Breunung</a> (<a h=<BR>ref=3D"https://metacpan.org/author/LICHTKIND">LICHTKIND</a>) =<BR> </span> <p style=3D"font-size: 16px"><BR> In the article, Lichtkind shows how to apply the Test::Bui=<BR>lder::Tester module to check your own test functions for correctness. He sh=<BR>ares real-life example of using the is_tuple() function that he has develop=<BR>ed to aid in creating a test for the GTC project.<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/psc/2026/04/this-wee=<BR>k-in-psc-222-2026-04-25.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">This week in PSC (222) | 2026-04-25</a><BR> <br /> <p style=3D"font-size: 16px"><BR> Ihe Perl Steering Council got together at the 2026 Perl To=<BR>olchain Summit (Vienna). During this meeting, the group discussed the curre=<BR>nt status of Perl 5.44. Most blockers have been resolved and EOL workflow h=<BR>as been put in place. Finalisation of details for the next stable release i=<BR>s currently taking place.<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/mikko_koivunalho/202=<BR>6/04/importance-of-repositories-in-public.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Importance of Repositories in Public</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/mikko_koivunalho/">Mikko Koivunalho</a> </spa=<BR>n> <p style=3D"font-size: 16px"><BR> In this blog post, Mikko argues that keeping project repos=<BR>itories publicly accessible is an important practice even when no new contr=<BR>ibutions are anticipated. Having a project public on GitHub preserves histo=<BR>rical context, serves as an example of quality work for others, and provide=<BR>s a source of useful data for the open-source community.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/mikko-koivunalho.jpeg" title=3D"Mikko Koivunalho" 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/petamem/2026/04/ai-a=<BR>s-a-chance.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">AI as a Chance - Opinion</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> In this article PetaMem discussed how through AI we will h=<BR>ave access to new ways to enhance our creative processes (as opposed to rep=<BR>lacing them), through developing a partnership with AI; allowing developers=<BR> and creators alike use the technology of AI to automate repetitive process=<BR>es and create opportunities for problems to be solved and new ideas develop=<BR>ed through creative innovation.<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://blogs.perl.org/users/todd_rinaldo/2026/04=<BR>/ai-contributions-to-cpan-the-copyright-question.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">AI Contributions to CPAN: The Copyright Question</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/todd_rinaldo/">Todd Rinaldo</a> </span> =<BR> <p style=3D"font-size: 16px"><BR> In his article, Todd explores some of the legal issues sur=<BR>rounding code that is generated by AI and available through CPAN, and wheth=<BR>er or not these AI-generated contributions are eligible for copyright prote=<BR>ction and/or a legal license. He also cautions maintainers about the use of=<BR> black box LLMs, which do not make public their training data, and encourag=<BR>es the Perl community to develop guidelines for the proper protection of th=<BR>e Perl software ecosystem from future disputes arising from improper use of=<BR> code generated by LLMs.<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"web" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Web</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://blog.dave.org.uk/2026/04/use-your-powers-=<BR>only-for-good-clark.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Use Your Powers Only for Good, Clark</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://perlhack=<BR>s.com/">Dave Cross</a> (<a href=3D"https://metacpan=<BR>.org/author/DAVECROSS">DAVECROSS</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Dave dissects a really good looking SPAM email made by an =<BR>AI LLM to show us all how the world will look in future with AI created out=<BR>reach. Even though the spam had accurately scraped Dave's background and bo=<BR>ok titles, Dave believes that this creates the illusion of understanding bu=<BR>t does not demonstrate the LLM has any real knowledge of either Dave's valu=<BR>es or business model. Dave further states that this type of outreach is now=<BR> cheaper and easier than ever though the deployment of AI to create large a=<BR>mounts of unsolicited SPAM.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/dave_cross.png" title=3D"Dave Cross" 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"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-371" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 371</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 "Missing =<BR>Letter" and "Subset Equilibrium". If you are new to the weekly challenge th=<BR>en why not join us and have fun every week. For more information, please re=<BR>ad the <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-370" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">RECAP - 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> Enjoy a quick recap of last week's contributions by Team P=<BR>WC dealing with the "Popular Word" and "Scramble String" tasks in Perl and =<BR>Raku. 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-370-1.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 370: Popular Word</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Abigail </span> <p sty=<BR>le=3D"font-size: 16px"><BR> Abigail offers a superb example of processing text for the=<BR> "Popular Word" task using the ability of Perl's regex engine to process wo=<BR>rds without considering case and complex punctuation marks. This solution i=<BR>s unique because it demonstrates a high-performance solution for filtering =<BR>out banned words while maintaining concise and easily readable 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-370-2.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 370: Scramble String</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Abigail </span> <p sty=<BR>le=3D"font-size: 16px"><BR> Abigail used a clever recursive method to take on the chal=<BR>lenge of the "Scramble String" problem. The use of clear base cases and log=<BR>ic to explore possible points to split and swap all contribute to the final=<BR> solution being an excellent example of how to solve complex problems with =<BR>string transformations, using a valid solution and providing a framework th=<BR>at can be used to solve other complex problems involving string transformat=<BR>ions.<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/popular-scramble.html" s=<BR>tyle=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Popular Scramble</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> Arne's experience in comparing Raku's expressive power vs.=<BR> Perl with respect to the solutions of these two challenges are at the hear=<BR>t of this review. He also demonstrates how to use Raku's built-in Bag and A=<BR>ny types to simplify complex logic with clean, idiomatic code. This article=<BR> is a great reference for developers who want to learn how to use modern fu=<BR>nctional programming patterns effectively.<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://dev.to/boblied/pwc-370-scramble-on-scramb=<BR>lin-man-5god" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">PWC 370 Scramble On, Scramblin' Man</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://dev.to/b=<BR>oblied/">Bob Lied</a> </span> <p style=3D"fo=<BR>nt-size: 16px"><BR> Bob has created a detailed breakdown of the Scramble Strin=<BR>g problem, looking at the need to use memoisation to avoid redundantly calc=<BR>ulating recursive algorithms. Bob has developed a very clearly constructed =<BR>solution to the Scramble String problem using test-first development which =<BR>is a perfect demonstration of how to keep performance and readability on co=<BR>mplex branching logic.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/bob-lied.png" title=3D"Bob Lied" 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_370.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge: Week 370</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Jaldhar H. Vyas </span> =<BR> <p style=3D"font-size: 16px"><BR> In this article, there is a thorough comparison made betwe=<BR>en two languages: Perl and Raku. The many modern capabilities of Raku, such=<BR> as having a Bag data structure and being natively supportive of methods fo=<BR>r manipulating strings, resulted in solving the stated problem while produc=<BR>ing significantly less code than what is generated by using Perl to do the =<BR>same thing.<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/2=<BR>4/ch-370.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Scrambled Bans</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> J=C3=B6rg has concentrated his efforts solely on providing=<BR> a high quality Perl solution to this challenge. The way he solves "Scrambl=<BR>e String" is especially impressive because he uses a recursive solution tha=<BR>t processes challenging partitioning and swapping of strings, using clean a=<BR>nd idiomatic Perl programming.<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/20/PWC370/" style=<BR>=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 370</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> W. Luis Moch=C3=A1n offers a mathematically rigorous and e=<BR>legant take on Challenge 370 using Perl. For Task 1, he utilises a compact =<BR>approach by normalising the input with lc and regex, then applying a freque=<BR>ncy count. His review is particularly positive about the clarity and effici=<BR>ency of using a single hash to filter out banned words while identifying th=<BR>e maximum frequency in one pass. For Task 2, he implements a recursive solu=<BR>tion and highlights the technical necessity of caching results to avoid the=<BR> exponential growth of possibilities in longer strings.<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-370/challenge-370/matthias-muth#readme" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Scrambling Back and Forth</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Matthias Muth </span> =<BR><p style=3D"font-size: 16px"><BR> Matthias's submission for Task 1, he has used a concise an=<BR>d efficient one-liner with List::UtilsBy::max_by to count how many times wo=<BR>rds appear and in doing so stores a reference to the 'most popular' result =<BR>while processing all results in a single pass. With respect to Task 2, Matt=<BR>hias did not limit himself to performing a simple recursive search as in pr=<BR>evious weeks; however, he developed a Reverse Scramble algorithm, which is =<BR>performing this task as a sequence of sorting in which strings become index=<BR>es of streaks representing their sorted order to allow for efficient verifi=<BR>cation of scrambling operations performed.<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/nb" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The scramble can not stop you / from becoming popu-ler=<BR>=E2=80=A6 lar</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> Packy's polyglot Challenge 370 features solid code samples=<BR> in Perl, Raku, Python, and Elixir that showcase how to solve the problem m=<BR>ultiple ways using different programming languages. He shows how using Elix=<BR>ir's pipe operator or Raku's Bag can help efficiently transform and filter =<BR>the paragraph from "Most Popular Word". He also demonstrates a consistent, =<BR>recursive approach to solving the problem using the same recursive logic, w=<BR>ith code examples in each of the four languages, while adapting to the spec=<BR>ific syntax and idioms of each language, in his example "Scramble String".<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>/370" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Words and more words</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> Peter implements a clean regular expression approach to no=<BR>rmalising the text and eliminating any banned words in Popular Word, while =<BR>also provides a completely recursive solution in Scramble String that clear=<BR>ly demonstrates splitting and swapping parts of the string in order to illu=<BR>strate the property of being scrambled.<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>wc370-1" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 370: Popular Word</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Reinier Maliepaard </span> =<BR> <p style=3D"font-size: 16px"><BR> Reinier solution includes a simple regular expression to r=<BR>emove punctuation characters and a hash to count the number of occurrences =<BR>of each valid word. This makes it easy to identify the most frequently used=<BR> word that is not on a banned list, and provides an easily readable model f=<BR>rom which to analyze text.<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>wc370-2" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 370: Scramble String</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Reinier Maliepaard </span> =<BR> <p style=3D"font-size: 16px"><BR> Reinier's demonstrates pruning as an optimisation techniqu=<BR>e. If the characters sorted for both strings do not match (meaning they are=<BR> not anagrams), the function returns false without going through all remain=<BR>ing recursive levels.<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_24.html" 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://hatley-s=<BR>oftware.blogspot.com/">Robbie Hatley</a> </span> =<BR> <p style=3D"font-size: 16px"><BR> Robbie's high-performance Perl solutions employ algorithmi=<BR>c efficiency and strong input validation. In Task 1, he uses a fast normali=<BR>sation method along with a hash-based frequency counting scheme to isolate =<BR>the most popular word. In Task 2, Robbie's "Scramble String" implementation=<BR> is notable for being a recursive Divide-and-Conquer strategy, providing an=<BR> additional speedup by implementing a pre-check anagram filter to eliminate=<BR> expensive recursive calls to incompatible strings.<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_370__Popular_Scramble.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Popular Scramble</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 shown how to use a specialised programming tool like=<BR> Counter in Rust to find popular words with only a few lines of code. In ad=<BR>dition, the example in PostScript is an interesting concept as it shows how=<BR> to create a counted hash from scratch using the examples provided in the R=<BR>ust program as a reference.<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-pop=<BR>ular-scrambling-2bba" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Popular Scrambling</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> Simon demonstrates Task 1 by methodically normalising stri=<BR>ngs and counting strings using hashes in order find the word with the highe=<BR>st occurrence. His solution for Task 2 highlights the use of recursion when=<BR> solving the problem, and optimises by checking if two strings are anagrams=<BR> with a "fail-fast" method; this way, all non-anagrams can be filtered out =<BR>before going through the more complex process of recursion.<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"perl_tutorial" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Perl Tutorial</d=<BR>iv><BR> =20<BR> <p style=3D"font-size: 16px">A section for newbies and for peop=<BR>le who need some refreshing of their Perl knowledge. If you have questions =<BR>or suggestions about the articles, let me know and I'll try to make the nec=<BR>essary changes. The included articles are from the <a href=3D"https://perlm=<BR>aven.com/perl-tutorial">Perl Maven Tutorial</a> and are part of the <a href=<BR>=3D"https://leanpub.com/perl-maven">Perl Maven eBook</a>.</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://perlmaven.com/perl-testing/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Testing in Perl</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://szabgab.=<BR>com/">Gabor Szabo</a> (<a href=3D"https://metacpan.=<BR>org/author/SZABGAB">SZABGAB</a>) </span> <p =<BR>style=3D"font-size: 16px"><BR> The 'slides' with all the examples that are used in the on=<BR>line course.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/gabor_szabo.png" title=3D"Gabor Szabo" 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"rakudo" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Rakudo</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://rakudoweekly.blog/2026/04/21/2026-16-selk=<BR>ie-tui-framework/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">2026.16 Selkie TUI Framework</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Elizabeth Mattijsen (<a href=<BR>=3D"https://metacpan.org/author/ELIZABETH">ELIZABETH</a>) =<BR></span> <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/elizabeth_mattijsen.png" title=3D"Elizabeth Mattijsen" width=3D"80" /=<BR>><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"training" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Training</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://academy.code-maven.com/c/perl-testing-202=<BR>6" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Testing in Perl</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://szabgab.=<BR>com/">Gabor Szabo</a> (<a href=3D"https://metacpan.=<BR>org/author/SZABGAB">SZABGAB</a>) </span> <p =<BR>style=3D"font-size: 16px"><BR> While we are still <a href=3D"https://luma.com/perl-maven"=<BR>>recording the live sessions</a> of the <b>Testing in Perl</b> you can also=<BR> watch the previous episodes on the Code Maven Academy web site. Usually it=<BR> is for paying subscribers only, but for the next couple of day you can sti=<BR>ll access it free of charge. You only need to register on the web site.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/gabor_szabo.png" title=3D"Gabor Szabo" 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/dxcvii-19=<BR>-great-cpan-modules-released.html">Great CPAN modules released last week</a=<BR>>.<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 5</a><BR> <br /> <p style=3D"font-size: 16px"><BR> April 30, 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://boston.pm.org/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Boston Perl Mongers virtual monthly</a><BR> <br /> <p style=3D"font-size: 16px"><BR> May 12, 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://tprc.us/tprc-2026-gsp/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Perl and R--===============1024478777==<BR>Content-Type: multipart/alternative; boundary=5879958dd419df7ce8009e3645afd23ab91453ab2ca2097240bff5622dfc<BR><BR>--5879958dd419df7ce8009e3645afd23ab91453ab2ca2097240bff5622dfc<BR>Content-Transfer-Encoding: quoted-printable<BR>Content-Type: text/plain; charset=utf-8<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/770.html<BR><BR><BR><BR>Hi there,<BR><BR>I like to believe that I belong to the old school of testing i.e.<BR>Test::More ( https://metacpan.org/pod/Test::More ). That being said, every<BR>now and then I come across a magical test workflow. One of them is<BR>App::Yath ( https://metacpan.org/pod/App::Yath ). The biggest and pleasant<BR>surprise is that both were presented by none other than <strong>Chad<BR>Granum</strong>. Although I love the idea, I find it hard to adapt to it. I<BR>have to force myself otherwise it won't happen. I wrote a short blog post (<BR>https://theweeklychallenge.org/blog/testing-in-perl ) as a reminder to<BR>myself while working on this editorial. I can refer to it next time I am<BR>changing existing code or adding new code.<BR><BR>Speaking of testing, <strong>Herbert Breunung</strong> shared a blog post (<BR>https://blogs.perl.org/users/lichtkind/2026/04/who-tests-the-tester-me.html<BR>) explaining how <strong>Test::Builder</strong> helped him create his own<BR>test suite. This reminded me how I did exactly that in<BR><strong>2010</strong> to create Test::Map::Tube (<BR>https://metacpan.org/pod/Test::Map::Tube ) for my routing framework,<BR>Map::Tube ( https://metacpan.org/pod/Map::Tube ). It makes me feel quite<BR>old now!<BR><BR>Enjoy rest of the newsletter.<BR><BR> --<BR> Your editor: Mohammad Sajid Anwar.<BR><BR><BR>Announcements<BR><BR> =20<BR> The London Perl and Raku Workshop 2026<BR> https://www.londonperlworkshop.com/news#News-2026-04-27<BR>=20<BR> Just a heads up: The next LPW is planned to be in November 2026.<BR> --------------<BR><BR> =20<BR> PPC Summer 2026 - Call for Participation!<BR> https://blogs.perl.org/users/oodler_577/2026/04/ppc-summer-2026---call-fo=<BR>r-participation.html<BR>=20<BR> Brett Estrade, who is a member of the Perl Community Conference (PPC)<BR> organising committee, has released a call for participants for the Summer<BR> 2026 PPC. He notes the group's success in the areas of scientific<BR> research and community building through the use of independent Perl<BR> conferences and asks for speakers to submit proposals to present their<BR> work via the Papercall system to help keep the momentum going.<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> Who tests the tester? Me !!!<BR> https://blogs.perl.org/users/lichtkind/2026/04/who-tests-the-tester-me.ht=<BR>ml<BR>=20<BR> In the article, Lichtkind shows how to apply the Test::Builder::Tester<BR> module to check your own test functions for correctness. He shares<BR> real-life example of using the is_tuple() function that he has developed<BR> to aid in creating a test for the GTC project.<BR> --------------<BR><BR> =20<BR> This week in PSC (222) | 2026-04-25<BR> https://blogs.perl.org/users/psc/2026/04/this-week-in-psc-222-2026-04-25.=<BR>html<BR>=20<BR> Ihe Perl Steering Council got together at the 2026 Perl Toolchain Summit<BR> (Vienna). During this meeting, the group discussed the current status of<BR> Perl 5.44. Most blockers have been resolved and EOL workflow has been put<BR> in place. Finalisation of details for the next stable release is<BR> currently taking place.<BR> --------------<BR><BR> =20<BR> Importance of Repositories in Public<BR> https://blogs.perl.org/users/mikko_koivunalho/2026/04/importance-of-repos=<BR>itories-in-public.html<BR>=20<BR> In this blog post, Mikko argues that keeping project repositories publicl=<BR>y<BR> accessible is an important practice even when no new contributions are<BR> anticipated. Having a project public on GitHub preserves historical<BR> context, serves as an example of quality work for others, and provides a<BR> source of useful data for the open-source community.<BR> --------------<BR><BR> =20<BR> AI as a Chance - Opinion<BR> https://blogs.perl.org/users/petamem/2026/04/ai-as-a-chance.html<BR>=20<BR> In this article PetaMem discussed how through AI we will have access to n=<BR>ew<BR> ways to enhance our creative processes (as opposed to replacing them),<BR> through developing a partnership with AI; allowing developers and<BR> creators alike use the technology of AI to automate repetitive processes<BR> and create opportunities for problems to be solved and new ideas<BR> developed through creative innovation.<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> AI Contributions to CPAN: The Copyright Question<BR> https://blogs.perl.org/users/todd_rinaldo/2026/04/ai-contributions-to-cpa=<BR>n-the-copyright-question.html<BR>=20<BR> In his article, Todd explores some of the legal issues surrounding code<BR> that is generated by AI and available through CPAN, and whether or not<BR> these AI-generated contributions are eligible for copyright protection<BR> and/or a legal license. He also cautions maintainers about the use of<BR> black box LLMs, which do not make public their training data, and<BR> encourages the Perl community to develop guidelines for the proper<BR> protection of the Perl software ecosystem from future disputes arising<BR> from improper use of code generated by LLMs.<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Web<BR><BR> =20<BR> Use Your Powers Only for Good, Clark<BR> https://blog.dave.org.uk/2026/04/use-your-powers-only-for-good-clark.html<BR>=20<BR> Dave dissects a really good looking SPAM email made by an AI LLM to show =<BR>us<BR> all how the world will look in future with AI created outreach. Even<BR> though the spam had accurately scraped Dave's background and book titles,<BR> Dave believes that this creates the illusion of understanding but does<BR> not demonstrate the LLM has any real knowledge of either Dave's values or<BR> business model. Dave further states that this type of outreach is now<BR> cheaper and easier than ever though the deployment of AI to create large<BR> amounts of unsolicited SPAM.<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 - 371<BR> https://theweeklychallenge.org/blog/perl-weekly-challenge-371<BR>=20<BR> Welcome to a new week with a couple of fun tasks "Missing Letter" and<BR> "Subset Equilibrium". 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 - 370<BR> https://theweeklychallenge.org/blog/recap-challenge-370<BR>=20<BR> Enjoy a quick recap of last week's contributions by Team PWC dealing with<BR> the "Popular Word" and "Scramble String" tasks in Perl and Raku. You will<BR> find plenty of solutions to keep you busy.<BR> --------------<BR><BR> =20<BR> Perl Weekly Challenge 370: Popular Word<BR> https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-370-1.html<BR>=20<BR> Abigail offers a superb example of processing text for the "Popular Word"<BR> task using the ability of Perl's regex engine to process words without<BR> considering case and complex punctuation marks. This solution is unique<BR> because it demonstrates a high-performance solution for filtering out<BR> banned words while maintaining concise and easily readable code.<BR> --------------<BR><BR> =20<BR> Perl Weekly Challenge 370: Scramble String<BR> https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-370-2.html<BR>=20<BR> Abigail used a clever recursive method to take on the challenge of the<BR> "Scramble String" problem. The use of clear base cases and logic to<BR> explore possible points to split and swap all contribute to the final<BR> solution being an excellent example of how to solve complex problems with<BR> string transformations, using a valid solution and providing a framework<BR> that can be used to solve other complex problems involving string<BR> transformations.<BR> --------------<BR><BR> =20<BR> Popular Scramble<BR> https://raku-musings.com/popular-scramble.html<BR>=20<BR> Arne's experience in comparing Raku's expressive power vs. Perl with<BR> respect to the solutions of these two challenges are at the heart of this<BR> review. He also demonstrates how to use Raku's built-in Bag and Any types<BR> to simplify complex logic with clean, idiomatic code. This article is a<BR> great reference for developers who want to learn how to use modern<BR> functional programming patterns effectively.<BR> --------------<BR><BR> =20<BR> PWC 370 Scramble On, Scramblin' Man<BR> https://dev.to/boblied/pwc-370-scramble-on-scramblin-man-5god<BR>=20<BR> Bob has created a detailed breakdown of the Scramble String problem,<BR> looking at the need to use memoisation to avoid redundantly calculating<BR> recursive algorithms. Bob has developed a very clearly constructed<BR> solution to the Scramble String problem using test-first development<BR> which is a perfect demonstration of how to keep performance and<BR> readability on complex branching logic.<BR> --------------<BR><BR> =20<BR> Perl Weekly Challenge: Week 370<BR> https://www.braincells.com/perl/2026/04/perl_weekly_challenge_week_370.ht=<BR>ml<BR>=20<BR> In this article, there is a thorough comparison made between two language=<BR>s:<BR> Perl and Raku. The many modern capabilities of Raku, such as having a Bag<BR> data structure and being natively supportive of methods for manipulating<BR> strings, resulted in solving the stated problem while producing<BR> significantly less code than what is generated by using Perl to do the<BR> same thing.<BR> --------------<BR><BR> =20<BR> Scrambled Bans<BR> https://github.sommrey.de/the-bears-den/2026/04/24/ch-370.html<BR>=20<BR> J=C3=B6rg has concentrated his efforts solely on providing a high quality=<BR> Perl<BR> solution to this challenge. The way he solves "Scramble String" is<BR> especially impressive because he uses a recursive solution that processes<BR> challenging partitioning and swapping of strings, using clean and<BR> idiomatic Perl programming.<BR> --------------<BR><BR> =20<BR> Perl Weekly Challenge 370<BR> https://wlmb.github.io/2026/04/20/PWC370/<BR>=20<BR> W. Luis Moch=C3=A1n offers a mathematically rigorous and elegant take on<BR> Challenge 370 using Perl. For Task 1, he utilises a compact approach by<BR> normalising the input with lc and regex, then applying a frequency count.<BR> His review is particularly positive about the clarity and efficiency of<BR> using a single hash to filter out banned words while identifying the<BR> maximum frequency in one pass. For Task 2, he implements a recursive<BR> solution and highlights the technical necessity of caching results to<BR> avoid the exponential growth of possibilities in longer strings.<BR> --------------<BR><BR> =20<BR> Scrambling Back and Forth<BR> https://github.com/MatthiasMuth/perlweeklychallenge-club/tree/muthm-370/c=<BR>hallenge-370/matthias-muth#readme<BR>=20<BR> Matthias's submission for Task 1, he has used a concise and efficient<BR> one-liner with List::UtilsBy::max_by to count how many times words appear<BR> and in doing so stores a reference to the 'most popular' result while<BR> processing all results in a single pass. With respect to Task 2, Matthias<BR> did not limit himself to performing a simple recursive search as in<BR> previous weeks; however, he developed a Reverse Scramble algorithm, which<BR> is performing this task as a sequence of sorting in which strings become<BR> indexes of streaks representing their sorted order to allow for efficient<BR> verification of scrambling operations performed.<BR> --------------<BR><BR> =20<BR> The scramble can not stop you / from becoming popu-ler=E2=80=A6 lar<BR> https://packy.dardan.com/b/nb<BR>=20<BR> Packy's polyglot Challenge 370 features solid code samples in Perl, Raku,<BR> Python, and Elixir that showcase how to solve the problem multiple ways<BR> using different programming languages. He shows how using Elixir's pipe<BR> operator or Raku's Bag can help efficiently transform and filter the<BR> paragraph from "Most Popular Word". He also demonstrates a consistent,<BR> recursive approach to solving the problem using the same recursive logic,<BR> with code examples in each of the four languages, while adapting to the<BR> specific syntax and idioms of each language, in his example "Scramble<BR> String".<BR> --------------<BR><BR> =20<BR> Words and more words<BR> http://ccgi.campbellsmiths.force9.co.uk/challenge/370<BR>=20<BR> Peter implements a clean regular expression approach to normalising the<BR> text and eliminating any banned words in Popular Word, while also<BR> provides a completely recursive solution in Scramble String that clearly<BR> demonstrates splitting and swapping parts of the string in order to<BR> illustrate the property of being scrambled.<BR> --------------<BR><BR> =20<BR> The Weekly Challenge - 370: Popular Word<BR> https://reiniermaliepaard.nl/pwc/index.php?id=3Dpwc370-1<BR>=20<BR> Reinier solution includes a simple regular expression to remove punctuati=<BR>on<BR> characters and a hash to count the number of occurrences of each valid<BR> word. This makes it easy to identify the most frequently used word that<BR> is not on a banned list, and provides an easily readable model from which<BR> to analyze text.<BR> --------------<BR><BR> =20<BR> The Weekly Challenge - 370: Scramble String<BR> https://reiniermaliepaard.nl/pwc/index.php?id=3Dpwc370-2<BR>=20<BR> Reinier's demonstrates pruning as an optimisation technique. If the<BR> characters sorted for both strings do not match (meaning they are not<BR> anagrams), the function returns false without going through all remaining<BR> recursive levels.<BR> --------------<BR><BR> =20<BR> The Weekly Challenge #370<BR> https://hatley-software.blogspot.com/2026/04/robbie-hatleys-solutions-in-=<BR>perl-for_24.html<BR>=20<BR> Robbie's high-performance Perl solutions employ algorithmic efficiency an=<BR>d<BR> strong input validation. In Task 1, he uses a fast normalisation method<BR> along with a hash-based frequency counting scheme to isolate the most<BR> popular word. In Task 2, Robbie's "Scramble String" implementation is<BR> notable for being a recursive Divide-and-Conquer strategy, providing an<BR> additional speedup by implementing a pre-check anagram filter to<BR> eliminate expensive recursive calls to incompatible strings.<BR> --------------<BR><BR> =20<BR> Popular Scramble<BR> https://blog.firedrake.org/archive/2026/04/The_Weekly_Challenge_370__Popu=<BR>lar_Scramble.html<BR>=20<BR> Roger shown how to use a specialised programming tool like Counter in Rus=<BR>t<BR> to find popular words with only a few lines of code. In addition, the<BR> example in PostScript is an interesting concept as it shows how to create<BR> a counted hash from scratch using the examples provided in the Rust<BR> program as a reference.<BR> --------------<BR><BR> =20<BR> Popular Scrambling<BR> https://dev.to/simongreennet/weekly-challenge-popular-scrambling-2bba<BR>=20<BR> Simon demonstrates Task 1 by methodically normalising strings and countin=<BR>g<BR> strings using hashes in order find the word with the highest occurrence.<BR> His solution for Task 2 highlights the use of recursion when solving the<BR> problem, and optimises by checking if two strings are anagrams with a<BR> "fail-fast" method; this way, all non-anagrams can be filtered out before<BR> going through the more complex process of recursion.<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Perl Tutorial<BR>A section for newbies and for people who need some refreshing of their Perl<BR> knowledge. If you have questions or suggestions about the articles, let<BR> me know and I'll try to make the necessary changes. The included articles<BR> are from the Perl Maven Tutorial ( https://perlmaven.com/perl-tutorial )<BR> and are part of the Perl Maven eBook ( https://leanpub.com/perl-maven ).<BR> =20<BR> Testing in Perl<BR> https://perlmaven.com/perl-testing/<BR>=20<BR> The 'slides' with all the examples that are used in the online course.<BR> --------------<BR><BR> =20<BR><BR>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR><BR>Rakudo<BR><BR> =20<BR> 2026.16 Selkie TUI Framework<BR> https://rakudoweekly.blog/2026/04/21/2026-16-selkie-tui-framework/<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>Training<BR><BR> =20<BR> Testing in Perl<BR> https://academy.code-maven.com/c/perl-testing-2026<BR>=20<BR> While we are still recording the live sessions (<BR> https://luma.com/perl-maven ) of the <b>Testing in Perl</b> you can also<BR> watch the previous episodes on the Code Maven Academy web site. Usually<BR> it is for paying subscribers only, but for the next couple of day you can<BR> still access it free of charge. You only need to register on the web<BR> site.<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/dxcvii-19-great-cpan-modules-releas<BR> ed.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 5<BR> https://luma.com/perl-maven<BR>=20<BR> April 30, 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>--5879958dd419df7ce8009e3645afd23ab91453ab2ca2097240bff5622dfc<BR>Content-Transfer-Encoding: quoted-printable<BR>Content-Type: text/html; charset=utf-8<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 #770 - 2026-04-27 - Yet Another Test Harness</ti=<BR>tle><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 #770 - 2026-04-27 - Yet Another Test Harness<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>manwar.org/">Mohammad Sajid Anwar</a><BR><BR> =20<BR> <div><BR> This edition was made possible by the <a href=3D"https://www.patreo=<BR>n.com/manwar">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/770.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> I like to believe that I belong to the old school of testing i.e. <=<BR>a href=3D"https://metacpan.org/pod/Test::More">Test::More</a>. That being s=<BR>aid, every now and then I come across a magical test workflow. One of them =<BR>is <a href=3D"https://metacpan.org/pod/App::Yath">App::Yath</a>. The bigges=<BR>t and pleasant surprise is that both were presented by none other than <str=<BR>ong>Chad Granum</strong>. Although I love the idea, I find it hard to adapt=<BR> to it. I have to force myself otherwise it won't happen. I wrote a short <=<BR>a href=3D"https://theweeklychallenge.org/blog/testing-in-perl">blog post</a=<BR>> as a reminder to myself while working on this editorial. I can refer to i=<BR>t next time I am changing existing code or adding new code.<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Speaking of testing, <strong>Herbert Breunung</strong> shared a <a =<BR>href=3D"https://blogs.perl.org/users/lichtkind/2026/04/who-tests-the-tester=<BR>-me.html">blog post</a> explaining how <strong>Test::Builder</strong> helpe=<BR>d him create his own test suite. This reminded me how I did exactly that in=<BR> <strong>2010</strong> to create <a href=3D"https://metacpan.org/pod/Test::=<BR>Map::Tube">Test::Map::Tube</a> for my routing framework, <a href=3D"https:/=<BR>/metacpan.org/pod/Map::Tube">Map::Tube</a>. It makes me feel quite old now!<BR> </p><BR> =20<BR> <p style=3D"font-size: 16px"><BR> Enjoy rest of the newsletter.<BR> </p><BR> =20<BR> <p style=3D"font-size: 14px"><BR> Your editor: Mohammad Sajid Anwar.<BR> </p><BR> </td><BR> <td><BR> <img style=3D"right:0; bottom: 0;" src=3D"https://perlweekly.com/i=<BR>mg/mohammad_anwar.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://www.londonperlworkshop.com/news#News-2026=<BR>-04-27" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The London Perl and Raku Workshop 2026</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Andrew Mehta (<a href=3D"http=<BR>s://metacpan.org/author/AJMETZ">AJMETZ</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Just a heads up: The next LPW is planned to be in November=<BR> 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://blogs.perl.org/users/oodler_577/2026/04/p=<BR>pc-summer-2026---call-for-participation.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">PPC Summer 2026 - Call for Participation!</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/oodler_577/">Brett Estrade</a> (<a hre=<BR>f=3D"https://metacpan.org/author/OODLER">OODLER</a>) </spa=<BR>n> <p style=3D"font-size: 16px"><BR> Brett Estrade, who is a member of the Perl Community Confe=<BR>rence (PPC) organising committee, has released a call for participants for =<BR>the Summer 2026 PPC. He notes the group's success in the areas of scientifi=<BR>c research and community building through the use of independent Perl confe=<BR>rences and asks for speakers to submit proposals to present their work via =<BR>the Papercall system to help keep the momentum going.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/brett_estrade.png" title=3D"Brett Estrade" 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"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/lichtkind/2026/04/wh=<BR>o-tests-the-tester-me.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Who tests the tester? Me !!!</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/lichtkind/">Herbert Breunung</a> (<a h=<BR>ref=3D"https://metacpan.org/author/LICHTKIND">LICHTKIND</a>) =<BR> </span> <p style=3D"font-size: 16px"><BR> In the article, Lichtkind shows how to apply the Test::Bui=<BR>lder::Tester module to check your own test functions for correctness. He sh=<BR>ares real-life example of using the is_tuple() function that he has develop=<BR>ed to aid in creating a test for the GTC project.<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/psc/2026/04/this-wee=<BR>k-in-psc-222-2026-04-25.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">This week in PSC (222) | 2026-04-25</a><BR> <br /> <p style=3D"font-size: 16px"><BR> Ihe Perl Steering Council got together at the 2026 Perl To=<BR>olchain Summit (Vienna). During this meeting, the group discussed the curre=<BR>nt status of Perl 5.44. Most blockers have been resolved and EOL workflow h=<BR>as been put in place. Finalisation of details for the next stable release i=<BR>s currently taking place.<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/mikko_koivunalho/202=<BR>6/04/importance-of-repositories-in-public.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Importance of Repositories in Public</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/mikko_koivunalho/">Mikko Koivunalho</a> </spa=<BR>n> <p style=3D"font-size: 16px"><BR> In this blog post, Mikko argues that keeping project repos=<BR>itories publicly accessible is an important practice even when no new contr=<BR>ibutions are anticipated. Having a project public on GitHub preserves histo=<BR>rical context, serves as an example of quality work for others, and provide=<BR>s a source of useful data for the open-source community.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/mikko-koivunalho.jpeg" title=3D"Mikko Koivunalho" 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/petamem/2026/04/ai-a=<BR>s-a-chance.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">AI as a Chance - Opinion</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> In this article PetaMem discussed how through AI we will h=<BR>ave access to new ways to enhance our creative processes (as opposed to rep=<BR>lacing them), through developing a partnership with AI; allowing developers=<BR> and creators alike use the technology of AI to automate repetitive process=<BR>es and create opportunities for problems to be solved and new ideas develop=<BR>ed through creative innovation.<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://blogs.perl.org/users/todd_rinaldo/2026/04=<BR>/ai-contributions-to-cpan-the-copyright-question.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">AI Contributions to CPAN: The Copyright Question</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://blogs.pe=<BR>rl.org/users/todd_rinaldo/">Todd Rinaldo</a> </span> =<BR> <p style=3D"font-size: 16px"><BR> In his article, Todd explores some of the legal issues sur=<BR>rounding code that is generated by AI and available through CPAN, and wheth=<BR>er or not these AI-generated contributions are eligible for copyright prote=<BR>ction and/or a legal license. He also cautions maintainers about the use of=<BR> black box LLMs, which do not make public their training data, and encourag=<BR>es the Perl community to develop guidelines for the proper protection of th=<BR>e Perl software ecosystem from future disputes arising from improper use of=<BR> code generated by LLMs.<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"web" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Web</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://blog.dave.org.uk/2026/04/use-your-powers-=<BR>only-for-good-clark.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Use Your Powers Only for Good, Clark</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://perlhack=<BR>s.com/">Dave Cross</a> (<a href=3D"https://metacpan=<BR>.org/author/DAVECROSS">DAVECROSS</a>) </span> =<BR> <p style=3D"font-size: 16px"><BR> Dave dissects a really good looking SPAM email made by an =<BR>AI LLM to show us all how the world will look in future with AI created out=<BR>reach. Even though the spam had accurately scraped Dave's background and bo=<BR>ok titles, Dave believes that this creates the illusion of understanding bu=<BR>t does not demonstrate the LLM has any real knowledge of either Dave's valu=<BR>es or business model. Dave further states that this type of outreach is now=<BR> cheaper and easier than ever though the deployment of AI to create large a=<BR>mounts of unsolicited SPAM.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/dave_cross.png" title=3D"Dave Cross" 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"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-371" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 371</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 "Missing =<BR>Letter" and "Subset Equilibrium". If you are new to the weekly challenge th=<BR>en why not join us and have fun every week. For more information, please re=<BR>ad the <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-370" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">RECAP - 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> Enjoy a quick recap of last week's contributions by Team P=<BR>WC dealing with the "Popular Word" and "Scramble String" tasks in Perl and =<BR>Raku. 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-370-1.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 370: Popular Word</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Abigail </span> <p sty=<BR>le=3D"font-size: 16px"><BR> Abigail offers a superb example of processing text for the=<BR> "Popular Word" task using the ability of Perl's regex engine to process wo=<BR>rds without considering case and complex punctuation marks. This solution i=<BR>s unique because it demonstrates a high-performance solution for filtering =<BR>out banned words while maintaining concise and easily readable 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-370-2.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 370: Scramble String</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Abigail </span> <p sty=<BR>le=3D"font-size: 16px"><BR> Abigail used a clever recursive method to take on the chal=<BR>lenge of the "Scramble String" problem. The use of clear base cases and log=<BR>ic to explore possible points to split and swap all contribute to the final=<BR> solution being an excellent example of how to solve complex problems with =<BR>string transformations, using a valid solution and providing a framework th=<BR>at can be used to solve other complex problems involving string transformat=<BR>ions.<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/popular-scramble.html" s=<BR>tyle=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Popular Scramble</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> Arne's experience in comparing Raku's expressive power vs.=<BR> Perl with respect to the solutions of these two challenges are at the hear=<BR>t of this review. He also demonstrates how to use Raku's built-in Bag and A=<BR>ny types to simplify complex logic with clean, idiomatic code. This article=<BR> is a great reference for developers who want to learn how to use modern fu=<BR>nctional programming patterns effectively.<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://dev.to/boblied/pwc-370-scramble-on-scramb=<BR>lin-man-5god" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">PWC 370 Scramble On, Scramblin' Man</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://dev.to/b=<BR>oblied/">Bob Lied</a> </span> <p style=3D"fo=<BR>nt-size: 16px"><BR> Bob has created a detailed breakdown of the Scramble Strin=<BR>g problem, looking at the need to use memoisation to avoid redundantly calc=<BR>ulating recursive algorithms. Bob has developed a very clearly constructed =<BR>solution to the Scramble String problem using test-first development which =<BR>is a perfect demonstration of how to keep performance and readability on co=<BR>mplex branching logic.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/bob-lied.png" title=3D"Bob Lied" 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_370.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge: Week 370</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Jaldhar H. Vyas </span> =<BR> <p style=3D"font-size: 16px"><BR> In this article, there is a thorough comparison made betwe=<BR>en two languages: Perl and Raku. The many modern capabilities of Raku, such=<BR> as having a Bag data structure and being natively supportive of methods fo=<BR>r manipulating strings, resulted in solving the stated problem while produc=<BR>ing significantly less code than what is generated by using Perl to do the =<BR>same thing.<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/2=<BR>4/ch-370.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Scrambled Bans</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> J=C3=B6rg has concentrated his efforts solely on providing=<BR> a high quality Perl solution to this challenge. The way he solves "Scrambl=<BR>e String" is especially impressive because he uses a recursive solution tha=<BR>t processes challenging partitioning and swapping of strings, using clean a=<BR>nd idiomatic Perl programming.<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/20/PWC370/" style=<BR>=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Perl Weekly Challenge 370</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> W. Luis Moch=C3=A1n offers a mathematically rigorous and e=<BR>legant take on Challenge 370 using Perl. For Task 1, he utilises a compact =<BR>approach by normalising the input with lc and regex, then applying a freque=<BR>ncy count. His review is particularly positive about the clarity and effici=<BR>ency of using a single hash to filter out banned words while identifying th=<BR>e maximum frequency in one pass. For Task 2, he implements a recursive solu=<BR>tion and highlights the technical necessity of caching results to avoid the=<BR> exponential growth of possibilities in longer strings.<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-370/challenge-370/matthias-muth#readme" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Scrambling Back and Forth</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Matthias Muth </span> =<BR><p style=3D"font-size: 16px"><BR> Matthias's submission for Task 1, he has used a concise an=<BR>d efficient one-liner with List::UtilsBy::max_by to count how many times wo=<BR>rds appear and in doing so stores a reference to the 'most popular' result =<BR>while processing all results in a single pass. With respect to Task 2, Matt=<BR>hias did not limit himself to performing a simple recursive search as in pr=<BR>evious weeks; however, he developed a Reverse Scramble algorithm, which is =<BR>performing this task as a sequence of sorting in which strings become index=<BR>es of streaks representing their sorted order to allow for efficient verifi=<BR>cation of scrambling operations performed.<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/nb" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The scramble can not stop you / from becoming popu-ler=<BR>=E2=80=A6 lar</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> Packy's polyglot Challenge 370 features solid code samples=<BR> in Perl, Raku, Python, and Elixir that showcase how to solve the problem m=<BR>ultiple ways using different programming languages. He shows how using Elix=<BR>ir's pipe operator or Raku's Bag can help efficiently transform and filter =<BR>the paragraph from "Most Popular Word". He also demonstrates a consistent, =<BR>recursive approach to solving the problem using the same recursive logic, w=<BR>ith code examples in each of the four languages, while adapting to the spec=<BR>ific syntax and idioms of each language, in his example "Scramble String".<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>/370" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Words and more words</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> Peter implements a clean regular expression approach to no=<BR>rmalising the text and eliminating any banned words in Popular Word, while =<BR>also provides a completely recursive solution in Scramble String that clear=<BR>ly demonstrates splitting and swapping parts of the string in order to illu=<BR>strate the property of being scrambled.<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>wc370-1" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 370: Popular Word</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Reinier Maliepaard </span> =<BR> <p style=3D"font-size: 16px"><BR> Reinier solution includes a simple regular expression to r=<BR>emove punctuation characters and a hash to count the number of occurrences =<BR>of each valid word. This makes it easy to identify the most frequently used=<BR> word that is not on a banned list, and provides an easily readable model f=<BR>rom which to analyze text.<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>wc370-2" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Weekly Challenge - 370: Scramble String</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Reinier Maliepaard </span> =<BR> <p style=3D"font-size: 16px"><BR> Reinier's demonstrates pruning as an optimisation techniqu=<BR>e. If the characters sorted for both strings do not match (meaning they are=<BR> not anagrams), the function returns false without going through all remain=<BR>ing recursive levels.<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_24.html" 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://hatley-s=<BR>oftware.blogspot.com/">Robbie Hatley</a> </span> =<BR> <p style=3D"font-size: 16px"><BR> Robbie's high-performance Perl solutions employ algorithmi=<BR>c efficiency and strong input validation. In Task 1, he uses a fast normali=<BR>sation method along with a hash-based frequency counting scheme to isolate =<BR>the most popular word. In Task 2, Robbie's "Scramble String" implementation=<BR> is notable for being a recursive Divide-and-Conquer strategy, providing an=<BR> additional speedup by implementing a pre-check anagram filter to eliminate=<BR> expensive recursive calls to incompatible strings.<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_370__Popular_Scramble.html" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Popular Scramble</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 shown how to use a specialised programming tool like=<BR> Counter in Rust to find popular words with only a few lines of code. In ad=<BR>dition, the example in PostScript is an interesting concept as it shows how=<BR> to create a counted hash from scratch using the examples provided in the R=<BR>ust program as a reference.<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-pop=<BR>ular-scrambling-2bba" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Popular Scrambling</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> Simon demonstrates Task 1 by methodically normalising stri=<BR>ngs and counting strings using hashes in order find the word with the highe=<BR>st occurrence. His solution for Task 2 highlights the use of recursion when=<BR> solving the problem, and optimises by checking if two strings are anagrams=<BR> with a "fail-fast" method; this way, all non-anagrams can be filtered out =<BR>before going through the more complex process of recursion.<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"perl_tutorial" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Perl Tutorial</d=<BR>iv><BR> =20<BR> <p style=3D"font-size: 16px">A section for newbies and for peop=<BR>le who need some refreshing of their Perl knowledge. If you have questions =<BR>or suggestions about the articles, let me know and I'll try to make the nec=<BR>essary changes. The included articles are from the <a href=3D"https://perlm=<BR>aven.com/perl-tutorial">Perl Maven Tutorial</a> and are part of the <a href=<BR>=3D"https://leanpub.com/perl-maven">Perl Maven eBook</a>.</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://perlmaven.com/perl-testing/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Testing in Perl</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://szabgab.=<BR>com/">Gabor Szabo</a> (<a href=3D"https://metacpan.=<BR>org/author/SZABGAB">SZABGAB</a>) </span> <p =<BR>style=3D"font-size: 16px"><BR> The 'slides' with all the examples that are used in the on=<BR>line course.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/gabor_szabo.png" title=3D"Gabor Szabo" 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"rakudo" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Rakudo</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://rakudoweekly.blog/2026/04/21/2026-16-selk=<BR>ie-tui-framework/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">2026.16 Selkie TUI Framework</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by Elizabeth Mattijsen (<a href=<BR>=3D"https://metacpan.org/author/ELIZABETH">ELIZABETH</a>) =<BR></span> <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/elizabeth_mattijsen.png" title=3D"Elizabeth Mattijsen" width=3D"80" /=<BR>><BR> </td></tr></table>=20<BR> </td></tr><BR> =20<BR> =20<BR><BR> <tr><td><BR> <hr style=3D"color: red" id=3D"training" /><BR> <div style=3D"font-size: 18px; font-weight: bold;">Training</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://academy.code-maven.com/c/perl-testing-202=<BR>6" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Testing in Perl</a><BR> <br /> <span style=3D"font-size: 14px">=20<BR> by <a href=3D"https://szabgab.=<BR>com/">Gabor Szabo</a> (<a href=3D"https://metacpan.=<BR>org/author/SZABGAB">SZABGAB</a>) </span> <p =<BR>style=3D"font-size: 16px"><BR> While we are still <a href=3D"https://luma.com/perl-maven"=<BR>>recording the live sessions</a> of the <b>Testing in Perl</b> you can also=<BR> watch the previous episodes on the Code Maven Academy web site. Usually it=<BR> is for paying subscribers only, but for the next couple of day you can sti=<BR>ll access it free of charge. You only need to register on the web site.<BR> </p><BR> =20<BR> </div><BR> </td><td style=3D"width:100px"><img src=3D"https://perlweekly.co=<BR>m/img/gabor_szabo.png" title=3D"Gabor Szabo" 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/dxcvii-19=<BR>-great-cpan-modules-released.html">Great CPAN modules released last week</a=<BR>>.<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 5</a><BR> <br /> <p style=3D"font-size: 16px"><BR> April 30, 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://boston.pm.org/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">Boston Perl Mongers virtual monthly</a><BR> <br /> <p style=3D"font-size: 16px"><BR> May 12, 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://tprc.us/tprc-2026-gsp/" style=3D"<BR> font-size: 18px;<BR> font-weight: bold;<BR> ">The Perl and R</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>