AppVeyor is a continuous integration service similar to Travis CI, just on Windows. If you have a Perl module on GitHub, it's not that hard to have it run tests automatically on Windows; it's just not well documented. (The following...| mauke
use v5.12.0; use warnings; s/\A(?:[0369]|[147][0369]*(?:[147][0369]*[258][0369]*)*(?:[147][0369]*[147]|[258])|[258][0369]*(?:[258][0369]*[147][0369]*)*(?:[258][0369]*[258]|[147]))*(?:0|[147][0369]*(?:[147][0369]*[258][0369]*)*5|[258][0369]*(?:[258][0369]*[147][0369]*)*[258][0369]*5)\z/Fizzbuzz/, s/\A(?:[0369]|[147][0369]*(?:[147][0369]*[258][0369]*)*(?:[147][0369]*[147]|[258])|[258][0369]*(?:[258][0369]*[147][0369]*)*(?:[258][0369]*[258]|[147]))+\z/Fizz/, s/\A[0-9]*[05]\z/Buzz/, say for 1 .. ...| mauke
In Glob Matching Can Be Simple And Fast Too Russ Cox benchmarked several glob implementations by matching the string a100 against the pattern (a*)nb. (Here exponentiation refers to string repetition, as in 'a' x 100 matched against ('a*' x $n)...| mauke
Today I saw Damian Conway giving a talk at YAPC::NA 2016 (also known as The Perl Conference now :-). He was talking about some cool Perl 6 features, and I realized that some of them are available right now in...| mauke
Perl has a "statement modifier" form of most control structures: EXPR if EXPR; EXPR unless EXPR; EXPR while EXPR; EXPR until EXPR; EXPR for EXPR; Perl also has a C-style for loop: for (INIT; COND; STEP) { ... } The...| mauke
We're all familiar with references and Use Rule 1: You can always use an array reference, in curly braces, in place of the name of an array. This leads to code like ${$foo} (dereference a scalar reference) or @{$bar{baz}} (dereference...| mauke
Let's say you have a glob pattern with shell-style wildcards from a config file or user input, where ? matches any character and * matches any string (0 or more characters). You want to convert it to a regex, maybe...| mauke
tybalt89 discovered a bug in Fun with logical expressions: $ echo IEabEba | perl try.pl ORIG: IEabEba MOD: V~V~V~a~b;~V~~a~~b;;V~V~b~a;~V~~b~~a;;; ...> V~V~V~a~b;~Vab;;V~V~b~a;~Vba;;; ...> V~V~V~a~b;~Vab;;~V~b~a;~Vba;; Not a tautology (a equals b) implies (b equals a) is a tautology but the program fails...| mauke
Here's a quickly thrown-together version of "Fun with logical expressions", written in Haskell: {-# LANGUAGE LambdaCase #-} module Main (main) where import Control.Applicative (Applicative (..), (<$>)) import Control.Arrow (first) import Data.Ix (inRange) import Control.Monad (guard, mplus, msum) import Data.Maybe (fromMaybe,...| mauke
Addendum 2: This set of rules is incomplete. See Fun with logical expressions 2 for an improved version. Addendum: I've written a more or less equivalent Haskell version of this program. Some programmers, when confronted with a boolean expression, think...| mauke
Today I got this spam message: From: Tessel van Leeuwen <tessel@waag.org> Subject: Invitation: Join the Apps for Europe competition and win 5,000 euro! To: undisclosed-recipients:; Hello, I'm writing to you because I found your email address on the website, http://act.useperl.at/apw2014/wiki?node=HackaThon,...| mauke
So I've decided to make a little PHP puzzle. The following program contains 3 test cases that you need to make pass. To do that, you should replace XXX in the assignments to $a, $b and $c by the right...| mauke
Perl 5.12.0 introduced pluggable keywords. This feature lets a module author extend Perl by defining custom keywords, at least as long as that module author knows XS and how to construct OP trees manually. Perl 5.14.0 added many functions to...| mauke
https://binary.golf/6:| blogs.perl.org
Every year we a “welcome” new bunch of trainees into our department. Young,| blogs.perl.org
https://binary.golf/6:| blogs.perl.org
This follow-up blog post shares the improvements to my earlier zero-dependency Role implementation in Perl. Follow the link below for more details: https://theweeklychallenge.org/blog/class-and-role| blogs.perl.org
Roles in Perl, implemented in native form with zero dependencies. Check out where the discussion ends up in the post below:| blogs.perl.org
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: | blogs.perl.org
Using AI to Optimise the Calculation of Krippendorff’s Alpha| blogs.perl.org
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.| blogs.perl.org
Design Pattern Factory: Moo vs experimental class feature.| blogs.perl.org
We often rely on our tools and just deploy new DB versions and move on.| blogs.perl.org
Caching using CHI.| blogs.perl.org
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!| blogs.perl.org
Re-creating the vulnerability CVE-2025-40927 in an isolated docker container. Please check out the link for more information: | blogs.perl.org
Caching in Perl using memcached.| blogs.perl.org
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!| blogs.perl.org
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.| blogs.perl.org
Reproduce the vulnerability CVE-2025-40909 in an isolated Docker container running Perl v5.34.0.| blogs.perl.org
Caching with Redis/Valkey using Perl. | blogs.perl.org
Comparative analysis of Storable and Sereal using Perl. | blogs.perl.org
Quick introduction to AWS Lambda using CLI, Python and Perl. | blogs.perl.org
Thanks again to Organic Trader for hosting and providing a venue!| blogs.perl.org
I'm resigning from the board position at TPF (The Perl Foundation) also known as TPRF (The Perl and Raku Foundation). tl;dr After eight years with the foundation board, the time has come for me to step down. While I'm leaving...| Makoto Nozaki
In my previous articles (#1 and #2), I covered the key activities of The Perl and Raku Foundation (TPRF), such as organizing conferences, providing grants, and other smaller initiatives. In this final article, I will explore TPRF's financials using publicly...| Makoto Nozaki
Read volume 1 here. In my last post, I talked about some of the big things TPF (The Perl Foundation) does. This time, I'll discuss some of the smaller stuff I've handled at TPF, often with help from others, and...| Makoto Nozaki
This article on the Python Software Foundation inspired me to write this. Serving on the board of a foundation isn't all about glamorous meetings and fancy titles. Still, I'd like to share how I ended up here and what I've...| Makoto Nozaki
I attended YAPC::Hiroshima 2024 in Japan. A few people asked me about the distinctions between YAPC::Japan and other Perl events worldwide, prompting me to write below. Before delving into the specifics, I must preface that my experience is primarily rooted...| Makoto Nozaki
日本のYAPCに参加したのは18年ぶり2度目。 イベント参加者として 世界一成功しているYAPCであるYAPC::Japanの運営を見習うためにボランティアで参加させてもらった。一般参加者の切符を買いますと言ったのだが、主催のkobakenさんに固辞された。神のようなお方 YAPCという名前はやはり良い ボランティアとして 朝7:30に集合だった。早めの行動をしようと7:25に着いたらほと...| Makoto Nozaki
So I visited Perl. More pictures to follow. Perl train station at night Perl train station during daytime From the distance. Right Germany, Left Luxembourg, Behind France...| Makoto Nozaki
I am just back from German Perl Workshop. The workshop is held every year and I finally had a chance to visit it! I had these reasons to go: Meet Perl hackers and community members who I have known online...| Makoto Nozaki
I had the honor to give a talk at Barcelona.pm Meetup. Perl community rocks as everybody knows; my new friends welcomed me and my family. We felt home, learned new things, enjoyed the nice dinner and it became the most...| Makoto Nozaki
I got a fantastic opportunity to give a talk at Barcelona.pm meetup in August. I'll speak about The Perl Foundation, focusing on grants and donations. For those who love technical talks as much as I do, there will be three...| Makoto Nozaki
We have five proposals to review, including the one from July. http://news.perlfoundation.org/2015/09/september-2015-grant-proposals-1.html...| Makoto Nozaki
This is a Japanese summary of Grants Committee Charter, How to write a proposal and Grant Benefits. YAPC::Asiaが目の前に迫ってきました。日本のPerl使いの皆様向けにThe Perl Foundation内のGrants Committeeの活動を紹介します。 以前Grants Committee委員の牧から案内がありましたように、Grants CommitteeはPerlの開発に貢献する個人に1万ドルを上限として助成金の交付を行っています。もちろん日本の皆さんも対...| Makoto Nozaki
Earlier I wrote this blog post, which in summary says value of a Perl software project, as opposed to a Perl infrastructure project, is difficult to quantify until the software is written and used. And it often does not work...| Makoto Nozaki
I had the pleasure of attending The Perl & Raku Conference (TPRC) 2025 in Greenville, SC as a volunteer. As always, opinions are my own.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This tenth post introduces you to what I call closures in XS.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This ninth post introduces you to C data types and how to expose them in perl.How do C data types differ to Perl?| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This eighth post introduces you to Perl regular expressions in XS.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This seventh post introduces you to exporting XSUBS.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This sixth post introduces you to subroutine invocation in XS.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This fifth post introduces you to subroutine(method/function) prototypes in XS.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This fourth post introduces you to overloading operators in XS.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This third post introduces you to list context in XS.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This second post introduces the fundamentals of type checking variables in XS.| blogs.perl.org
Over the past year, I’ve been self-studying XS and have now decided to share my learning journey through a series of blog posts. This first post introduces the fundamentals of creating an perl object from XS.| blogs.perl.org
So, what exactly is a Readonly variable in Perl? A readonly variable is one that, once assigned a value, cannot be changed. Any attempt to modify it will trigger a runtime error. This mechanism enforces immutability, ensuring that critical values remain untouched and are protected from accidental or unauthorised alterations.| blogs.perl.org
In the last months of the previous century, I had to learn Perl to be able to teach it to professionals. It was my 28th language to use, but still took two years to understand deeply. As experienced assembler and C programmer, I was astound how much more of my ideas I could achieve with this new Swiss army knife in my hands. I fell in love with Perl.| blogs.perl.org
This is a continuation of a series of articles about how to write XS libraries that are more convenient and foolproof for the Perl users, while not blocking them from using the actual C API.| blogs.perl.org
Intro| blogs.perl.org
Following up on my previous post (MariaDB 10 and Perl DBIx::Class::Schema::Loader), I wanted to try the 'deploy' feature to create database tables from Schema/Result classes.| blogs.perl.org
DBD::SQLite 1.73_01 (with SQLite 3.42.0) is a release candidate for the next stable DBD::SQLite. This release is mainly to upgrade the bundled SQLite library. I'll wait for about a month and release 1.74 in the middel of September if there's...| Kenichi Ishigaki
Four years have passed since the last Perl Toolchain Summit (PTS) in Marlow. I planned to continue working on PAUSE's web UI, but I didn't exactly remember what to do. So the first thing I did at home before the...| Kenichi Ishigaki
DBD::SQLite 1.71_07 (with SQLite 3.39.4) is a release candidate for the next stable DBD::SQLite. This release is mainly to address a security hole found in SQLite, plus a few performance issues for perl built with -DDEBUGGING. See Changes for other...| Kenichi Ishigaki
DBD::SQLite 1.67_07 (with SQLite 3.36.0) is a release candidate for the next stable DBD::SQLite. This release has a notable change to improve how to deal with Unicode/Latin-1 characters, contributed by Felipe Gasper. If you write a new application, it is...| Kenichi Ishigaki
DBD::SQLite 1.65_03 (with SQLite 3.32.3) is a release candidate for the next stable DBD::SQLite. There are no big changes, maybe except for the ncrease of the default upper bound on the number of parameters from 999 to 32766 (since SQLite...| Kenichi Ishigaki
DBD::SQLite 1.63_05 (with SQLite 3.29.0) is a release candidate for the next stable DBD::SQLite. There are no big changes, maybe except for two new db_config options to disallow double-quoted string literals. use DBD::SQLite::Constants qw/:database_connection_configuration_options/; $dbh->sqlite_db_config( SQLITE_DBCONFIG_DQS_DML, 1 ); $dbh->do('INSERT INTO...| Kenichi Ishigaki
At the Perl Toolchain Summit 2019 in Marlow/Bisham, I added a feature to manage PAUSE permissions per distribution, which I hope makes it easier for you to grant permissions to other contributors. This was the fifth year of my PAUSE...| Kenichi Ishigaki
DBD::SQLite 1.61_04 (with SQLite 3.26.0) is a release candidate of the next stable DBD::SQLite. This release has a security fix for FTS users who allow arbitrary SQL statements from users for some reasons (usually because of a SQL injection vulnerability)....| Kenichi Ishigaki
DBD::SQLite 1.59_03 (with SQLite 3.25.2) is a release candidate of the next stable DBD::SQLite. Notable new features by the upstream are PostgreSQL-style UPSERT (3.24.0), ALTER TABLE table RENAME COLUMN oldname TO newname (3.25.0), and window functions (3.25.0), among others. It...| Kenichi Ishigaki
It's been a year since the last stable DBD::SQLite was released. Actually, it's been a year and a half since the SQLite library bundled in the last stable DBD::SQLite was released by the upstream. A lot have happened there, and...| Kenichi Ishigaki
At the last two Perl QA Hackathons, I worked on porting PAUSE on Plack, to drop old mod_perl and Apache dependencies and make it easier to set up PAUSE on your local environment. It was successful, but more could be...| Kenichi Ishigaki
DBD::SQLite 1.51_06 (with SQLite 3.15.0) is a release candidate of the next stable DBD::SQLite. As always, please test it with your modules/applications and let me know if you find anything, especially if you're using FTS because DBD::SQLite has disabled two-arg...| Kenichi Ishigaki
Last year, at the QA Hackathon 2015 in Berlin, I created a branch for PAUSE to use Plack, and succeeded to make it live on a staging environment. However, we didn't merge it into the master, because we knew we...| Kenichi Ishigaki
Last year at the Perl Toolchain Summit (PTS) in Lyon, I left three draft pull requests: one about the class declaration introduced in Perl 5.37, one about the PAUSE on docker, and one about multifactor authentication. I wanted to brush them up and ask Andreas König to merge some, but which should I prioritize this year?| blogs.perl.org
Let’s have a thought experiment. Assume there is an Open Source-licensed Perl module published on CPAN that you care about, and that hasn’t had any updates in a very long time - what are your options? In this blog post,...| Salve J. Nilsen
The 2018 edition of the Perl Toolchain Summit is over! I’ve posted my report from it on my own blog....| Salve J. Nilsen
Every year we bring together the lead developers of the Perl and CPAN toolchain! This event was previously known as the QA Hackathon, but in 2016 it became the Perl Toolchain Summit (PTS) to more accurately reflect the scope and...| Salve J. Nilsen
We're happy to confirm the venue and date of this year's London Perl & Raku Workshop.| blogs.perl.org
Fixing DBIx::Class::Schema::Loader For Use With MariaDB 10 Client Software| blogs.perl.org
Maintainers and authors are found everywhere throughout our dependency trees. This includes the authors of the tooling others use for maintaining, building, testing, writing and running the infrastructure they depend on. Even maintainers depend on other maintainers.| blogs.perl.org
The Weekly Challenge 145 The Task 2 of the Weekly Challenge #145 asked us to build a Palindromic Tree. It also linked to a blog post explaining the "Eertree" data structure. Maybe it was just me, but I found...| E. Choroba
Product SubArray Given a list of 4 or more numbers, write a script to find the contiguous sublist that has the maximum product. The length of the sublist is irrelevant; your job is to maximize the product. Example Input:...| E. Choroba
Excel Column Write a script that accepts a number and returns the Excel Column Name it represents and vice-versa. Excel columns start at A and increase lexicographically using the 26 letters of the English alphabet, A..Z. After Z, the...| E. Choroba
Linked List You are given a linked list and a value k. Write a script to partition the linked list such that all nodes less than k come before nodes greater than or equal to k. Make sure you...| E. Choroba
Compare Version Compare two given version number strings v1 and v2 such that: If v1 > v2 return 1 If v1 < v2 return -1 Otherwise, return 0 The version numbers are non-empty strings containing only digits, and the...| E. Choroba
Shortest Unique Prefix Write a script to find the shortest unique prefix for each each word in the given list. The prefixes will not necessarily be of the same length. Sample Input [ "alphabet", "book", "carpet", "cadmium", "cadeau", "alpine"...| E. Choroba
Diff-K You are given an array @N of positive integers (sorted) and another non negative integer $k. Write a script to find if there exists 2 indices $i and $j such that $A[$i] - $A[$j] == $k and $i...| E. Choroba
Kth Permutation Sequence Write a script to accept two integers n (>=1) and k (>=1). It should print the k-th permutation of n integers. For example, n=3 and k=4, the possible permutation sequences are listed below: 123 132 213...| E. Choroba
Rotate Matrix Write a script to rotate the following matrix by given 90/180/270 degrees clockwise. [ 1, 2, 3 ] [ 4, 5, 6 ] [ 7, 8, 9 ] For example, if you rotate by 90 degrees then...| E. Choroba
I've written a new blog post on Perl 7 (prev: Perl 7: A Risk-Benefit Analysis and Perl 7 By Default). You can find it, and likely my future posts, on dev.to#perl, for similar reasons as mentioned here. Perl 7: A...| Grinnz
Perl 7 has been announced as the next direction of Perl development. My previous blog post explored at a high level the risks and benefits of the announced direction, as well as those of a more incremental proposal. The primary...| Grinnz
At the recent Conference in the Cloud for Perl and Raku, Sawyer X (the pumpking of Perl) announced an ambitious plan for Perl 7. Since Perl 6 was renamed to Raku to better communicate its fundamental differences from the well...| Grinnz
The official Perl documentation site at https://perldoc.perl.org was recently overhauled. Independently, I put together a reimagined documentation site that would be hosted at https://perldoc.pl. In the interest of providing a documentation site that best serves the needs of the Perl...| Grinnz
CPAN is wonderful and it is vast. Task::Kensho offers a curated look at the best it has to offer for those who don't know what to look for. But to remain useful, it must keep up with the trends of...| Grinnz
The localtime and gmtime built-in functions are interfaces to the POSIX functions for turning a Unix epoch timestamp into date-time components in either UTC or the system local time. When you want to go the other way, there's Time::Local. Well,...| Grinnz
Search is a hard problem. It is the task of getting users to what they want to find, even if they don't know exactly what that is. Its requirements vary widely based on the kinds of things people will want...| Grinnz
I was grateful to attend for the first time the Perl Toolchain Summit, held this year in Marlow, UK at the Bisham Abbey. I got to meet many of the talented and persistent contributors to the Perl CPAN infrastructure, and...| Grinnz