The Good, Bad and Ugly Perl and Gemini Cli

In the last few months I have been learning Flutter and Dart and recently I saw a youtube video from our very own Perl Wizard Randal Schwartz ( Vibe-coding with Gemini CLI ) where he is exploring the use of Google Gemini to vibe code Flutter applications. Gemini Cli is a command line tool that gives you the power of Gemini AI right in your command line prompt. In the beginning of Randal's adventure with Gemini he wrote this AI prompt "review the app @youtube_watcher. Tell me the Good, the Bad and the Ugly." and AI delivered a very detailed response on what is and isn't working within the application.

After seeing this very detailed report I decided to do the same on ev-calc-pricing a perl dancer project I worked on and I was amazed to see Gemini work on a perl dancer project. At this point I realize that Gemini is capable of assisting coders in any language/ framework and it can provide insight on software engineering best practices for you application.

YARA Malware Scanner


Introducing YaraFFI, minimal Perl FFI bindings for the YARA malware scanning engine.
For more information, please follow the post below:
https://theweeklychallenge.org/blog/yara-malware-scanner

This week in PSC (203) | 2025-09-29

We finally managed to arrange our first regular meeting between the three of us.

  • Largely we discussed strategy for the named parameters branch. We agreed to merge soon (so people start playing with it), just staying ready to back it out well before release, in case it proves not to be ready.
  • In that context, we considered the situation with experiment warnings. We agreed that named parameters should be an additional experiment of its own, though it is an adjunct of another experiment – and we do not yet have established ways of dealing with such a situation. We want to think about how our experiment mechanism should be extended to cover such cases.

[P5P posting of this summary]

A Quiz about Operator Priorities

#!/usr/bin/perl

use 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 '';
}

Finally fixed a two-decade bug in my File::Finder CPAN module

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]

bless vs Class::Mite


Class::Mite is getting better relatively as numbers shown in the post below: https://theweeklychallenge.org/blog/bless-vs-class-mite

This week in PSC (202) | 2025-09-25

Ongoing scheduling issues have meant we haven’t met all three together for a while, but today Paul and Leon found a time to discuss a few issues.

Dev point releases

5.43.3 just went out. .4 to .7 are accounted for, so we’ve a few months yet on that. Nothing for PSC to do for now.

OpenSSL progress

Leon has been building a replacement for Net::SSLeay - an XS wrapper of libssl. Eventual plan is that IO::Socket::SSL should be able to use that instead. Eventual intention is that it can be bundled with the actual core perl dist and get us ability to use https URLs from the in-core CPAN client directly.

We should have a technical meeting at some point to round up some of the interested parties. PSC’s involvement can just be keeping an eye on it, and seeing if it is on track to be included in (5.)44.

TODO: Plan a time and audience for said meeting.

Better categorization of core vs dual-life modules

new GTC Architecture

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!

Benchmark::MCE on CPAN

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:

Roles in Perl


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

PCC Videos Now Being Released

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)

This week in PSC (199) | 2025-08-07

Only Graham and Philippe attended. We coordinated with Aristotle via chat.

We only met to discuss the mailing-list moderation and immediate actions
(which resolved to sending an email to them moderators, and another one
to the list).

We also talked about moderation in general, and got some ideas to discuss
with the next PSC.

[P5P posting of this summary]

Sydney August Meeting!

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.

Unary Operator


The unary + operator is one of the most commonly used operators in Perl. Below is a post detailing a recent situation where I encountered it:
https://theweeklychallenge.org/blog/unary-operator

Is it still worth adding installation instructions to a distribution?

I have decided to write a successor to Pod::Readme that works as a Dist::Zilla plugin that plays well with Pod::Weaver.

The idea for Pod::Readme is that a README file that is simply a version of the module documentation isn't all that useful. It often lacks important details like the prerequisites or installation instructions, and it includes a lot of unnecessary details about functions and methods.

A README file should be short and sweet: a synopsis and description, installation instructions and requirements, links to issue trackers, source repos and author/copyright info.

As I am rewriting this, I am wondering if the installation instructions are necessary now?

Many distributions have a generic INSTALL file, generally created by something like Dist::Zilla::Plugin::InstallGuide.

Before Dist::Zilla was as widely used, another option was to add installation instructions to the README file, usually with a few boilerplate along the lines of

Science Perl Journal DOIs are now live! Update on videos and next Issue of the SPJ

Prepare yourselves, the Call for Participation for the December PCC will be happening soon!

DOIs:

DOIs like permanent redirects for publications and research assets. They are managed through organizations like Crossref and are assigned at Arxiv.org, for example. They are not fee, and infact require a relatively large financial investment.

Now that we have our ISSN for Issue #1, https://doi.org/10.63971/spj.2024v01 now works! Each article now has a beautiful, permanent DOI that redirects to it's own URL at science.perlcommunity.org.

Current DOIs:

Upcoming Content and Events:

The next few months are going to be very prolific for us. Starting very soon, we are going to begin:

ANN: Perl.Wiki V 1.29. jsTree version V 1.00. CPAN::MetaCurator V 1.00

Remember to click 'Continue Reading' or whatever.

You can download Perl Wiki V 1.29.

And you can play with the jsTree version V 1.00.

Also the corresponding Perl module is on CPAN as:
CPAN::MetaCurator V 1.00.
This converts the JSON file exported from Perl.Wiki into a HTML/jsTree managed version.

Design Pattern Factory


Design Pattern Factory: Moo vs experimental class feature.
Please check out the link for more information:
https://theweeklychallenge.org/blog/design-pattern-factory

This week in PSC (201) | 2025-09-01

All three of us attended, but with Aristotle and Paul short on time. So this was a short meeting. We discussed some administrivia and reviewed the left-over todo list from the previous PSC.

[P5P posting of this summary]

A Quick Update on Dancer2 2.0.0

Hi all,

Hope you are all having a great summer!

Work continues on Dancer2 2.0.0, albeit a bit slower than planned. It's summer; trips happen, things come up, etc. etc. Progress is still happening though - we took in a few extra PRs (with one more incoming still), and a few more approvals for some items are needed.

I'll keep dropping updates as the release approaches. Hoping you are all as excited for this as I am :-)

Keep on Dancing! Jason

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.