Dancer2 2.0.1 Released
Dancer2 2.0.1 has been released. It's a small maintenance release that fixes a few broken documentation links.
Enjoy, and keep Dancing!
Jason / CromeDome
Dancer2 2.0.1 has been released. It's a small maintenance release that fixes a few broken documentation links.
Enjoy, and keep Dancing!
Jason / CromeDome
Binary Golf Grand Prix is an annual small file format competition, currently in it's sixth year. The goal is to make the smallest possible file that fits the criteria of the challenge.
This year's BGGP challenge was to output or display 6. I always wanted to work with actual machine code, so I decided to submit a DOS COM executable. Why? Because the COM format has no headers or other metadata; you can just put some x86 instructions in a file and run it directly.
Having no experience with DOS, I started by looking up a "hello world" example and found https://github.com/susam/hello:
MOV AH, 9
MOV DX, 108
INT 21
RET
DB 'hello, world', D, A, '$'
All three of us attended.
Available from the Wiki Haven.
I have still not had time to update CPAN::MetaCustodian, so it does not yet work correctly with the latest version of Perl.Wiki.html.

Class::Mite is getting better relatively as numbers shown in the post below: https://theweeklychallenge.org/blog/bless-vs-class-mite
At the beginning of the year, we ran a small experiment at work. We hired four annotators and let them rate 900 sentences (the details are not important). To decide whether the inter-annotator agreement was significant, we calculated (among others) Krippendorff’s alpha coefficient.
I’d used Perl for everything else in the project, so I reached for Perl to calculate the alpha, as well. I hadn’t found any module for it on CPAN, so I wrote one: I read the Wikipedia page and implemented the formulas.
The experiment was promising, so we got additional funding. We hired 3 more annotators, and a few months later, another nine. This increased the number of raters to 16. So far, they’ve rated about 200K sentences. Each sentence has been annotated by at least two annotators (usually three).
One day, I decided to calculate the inter-annotator agreement for the new data. To my surprise, the calculation took more than 6 hours.
We finally managed to arrange our first regular meeting between the three of us.
Without weighing in to the pros and cons of using a Monorepo approach to your organizations codebase, I am interested in hearing about tools and approaches that have been used with Perl.
For example, I have found that Bazel has Perl support which seem fairly actively. I wonder if there is anything that can integrate with Dist::Zilla? Or any way of managing pulling third party code?
Experiences with CI/CD in the normal Git hosting platforms are also of interest - although it does seem like Github and Gitlab are designed around death-by-repo - and I have seen some features to vary the "actions" behavior based on whats changed. I am however just as interested in if you have had experiences with other platforms please chime in!
Fwiw I realize that perhaps Git isn't the best for Monorepos (although you could argue that the Linux Kernel is in a monorepo) and I have no issue with current alternatives and upcoming ones.
Any plugins that can help? For anything mentioned or not.
Totally open ended question. Please comment!

Roles in Perl, implemented in native form with zero dependencies. Check out where the discussion ends up in the post below:
https://theweeklychallenge.org/blog/roles-in-perl
At long last - Dancer2 2.0.0!
I apologize it took longer than expected - open source doesn't always move as fast as we'd like it to - but there's a lot of great things in this release that make it worth the wait.
Head on over to Perl.com to check out the details. Here's a quick summary of what's new:
on_hook_exceptionWe're really excited for this release, and we hope you are too!
Keep Dancing!
Jason/CromeDome
We often rely on our tools and just deploy new DB versions and move on.
Lets see these simple examples.
Example 1
You have Schema v1 where table's column has the name `X`. At the next Schema v2 instead of it you created column named `Y`.
v1 -> v2
X -> -
- -> Y
So the tool correctly drops the `X` and creates `Y`.
Example 2:
For downgrades it looks the similar:
v2 -> v1
Y -> -
- -> X
Simple! Right??
Example 3
Let's do it in more advanced way. Now instead of create/drop we will rename field:
v1 -> v2
X -> Y{renamed X}
In this scenario SQL:T will detect `renamed` option and will generate `ALTER ...` statements correctly instead of CREATE/DROP one.
Example 4
Let's move to Schema v3 where we create `X` and drop `Y` (like we did in the example 1):
v2 -> v3
Y{renamed X} -> X
The annual Perl-Conf.Ru/25 will take place in Moscow on September 27, 2025 — a special date marking the birthday of Perl's creator, Larry Wall!
The conference will bring together the Perl community to share experiences and discuss current trends in development. The program includes reports on modern tools and practical approaches to solving complex problems.
The talks will cover:
Registration and Details: https://perl-conf.ru/25
#!/usr/bin/perluse 5.36.0;
# ------------------------------------------------
say 'Does priority say we print 2b or ! 2b?';
my($action_types) = qr/PAYMENT|SETTLEMENT|TRANSFER/o;
say "Action types: $action_types";
for my $action (qw/PAYMENT REFUND/)
{
say "Action: $action";
say "Case: 1. $action (1a): ", $action =~ $action_types ? 'Present' : 'Absent';
say "Case: 2. $action (2a): ", "$action (2b): " . $action =~ $action_types ? 'Present' : 'Absent';
say "Case: 3. $action (3a): ", "$action (3b): " . ($action =~ $action_types) ? 'Present' : 'Absent';
say "Case: 4. $action (4a): ", "$action (4b): " . ( ($action =~ $action_types) ? 'Present' : 'Absent');
say "Case: 5. $action (5a): " . ($action =~ /$action_types/ ? 'Present' : 'Absent');
say '';
}
After a very long hiatus due to the triplet of work-vacation-work, we return to Part 3 of my AI assisted coding of a Perl interface to a foreign library.
I will not repeat the post on my Github pages Github pages, or the documentation of my MetaCPAN package Bit::Set which features a "vibecoding" section.
However, I would like to share the take home points from my exercise:
We are moving full steam ahead. The Journals are not so easy to put out 2x a year we are finding, but the editing process for Issue #2 is moving ahead nonetheless. We are now collecting papers for inclusion for Issue #3. But our hybrid conferences are proving to be very successful endeavors. We hope you will consider submitting a Science Track paper or regular Perl talk to this 2 day hybrid conference in sunny ole Austin, TX, USA.
See more:
Twenty years is a long time in the world of software. That's how long it's been since I last updated my Perl module, File::Finder. But today, thanks to a bug report from a dedicated user, I'm excited to announce the release of version 1.0.0!
For those who don't know, File::Finder is a handy little module that gives you the power of the find command right in your Perl code. It turns out that it wasn't playing nicely with Windows, and it was high time to fix that.
It's a surreal and wonderful feeling to revisit code you wrote two decades ago and find that it's still useful to people. It's a testament to the power and longevity of Perl and the open-source community.
A big thank you to the user who took the time to report the bug and help me bring this module into the modern era. It's moments like these that make you appreciate the collaborative spirit of software development.
You can find the new, Windows-friendly version of File::Finder on CPAN.
#Perl #CPAN #SoftwareDevelopment #LegacyCode #OpenSource #ThrowbackThursday
[this message written with the assistance of Gemini CLI inside VSCode]
Graphic::Toolkit::Color 1.9 brought several big new features which I will write about when 2.0 comes out - just to sum up what changed since 1.0. This time I want to describe the internal changes, since this release completed an in-depth rewrite. So this will be about software engineering, architecture and coding style. TLDR: simple, clear, DDD, OO by composition and arg and a color space DSL!
I recently refactored the multi-core benchmarking framework I've been using for my Perl CPU benchmark suite (Benchmark::DKbench) and released it as a separate module: Benchmark::MCE.
Why spin it out? Because the harness can do more: it can be used to write custom benchmark suites of any type, generate massively parallel workloads for stress testing, or run throughput benchmarks against services and APIs.
The exact scenario that prompted me was a comparison of Cloud SQL database instances. We wanted to see how a 16-CPU Enterprise Plus instance would compare to a 24-CPU Enterprise instance under heavy load. One way to do that is to write one or more functions that run randomized, typical/heavy queries (e.g. random searches for SpareRoom ads in our case), then use Benchmark::MCE to time them running on dozens of parallel MCE workers to simulate high load:
The 2024 Perl Community Conference videos are being sent out now. To get the early access, join our announcement-only email list at https://perlcommunity.org/science/#mailing_list.
You may also join the Perl Programmers Facebook Group, or if you're a member go there. A few days after the latest videos are sent to our exclusive mailing list, they will get set to the FB group.
Finally, you may monitor our Perl Community Subreddit, which will be the last place they are officially released to the public. We just dropped batch #2. We have 2 more batches for the 2024 PCC. Then we'll be doing it all over again for the 2025 Summer PCC we just had in July.
And if you see anyone else releasing them on any other platforms, note this is currently unauthorized!
Cheers, Brett Estrade (OODLER)
Thanks again to Organic Trader for hosting and providing a venue!
Meeting is as follows...
Speaker:
Stuart Cooper
Time and Date:
6:30-9pm
Wednesday 20th August 2025
Venue:
Organic Trader Pty Ltd
Level 1
Unit 13/809-821 Botany Rd
Rosebery NSW 2018
Getting there:
Walking from either Mascot or Green Square station seems to be roughly the same distance.
Please also join the Sydney PM email list (low volume), Australia Perl on FB, or you can point your browser at the Sydney PM website for the same links in longer form.
blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.