Recent CPAN uploads - MetaCPAN

Acme-CPANModules-ManagingMultipleRepositories-0.001

Managing multiple repositories

Changes for 0.001 - 2021-02-02

  • First release.
2021.05.16 00:05

Form-Tiny-1.13

Input validator implementation centered around Type::Tiny

Changes for 1.13

  • improve documentation
  • move documentation on bare-bones to Manual::Internals
  • fix distribution metadata
2021.05.15 21:31

Alien-Build-Plugin-Download-GitHub-0.07

Alien::Build plugin to download from GitHub

Changes for 0.07 - 2021-05-15T14:28:23Z

  • Optionally use GitHub Personall Access Token when specified as environment variable and using Alien::Build 2.39+ (gh#3, gh#13, gh#14)
2021.05.15 20:29

Dancer2-Plugin-WebService-4.4.2

RESTful Web Services with login, persistent data, multiple in/out formats, IP security, role based access

Changes for 4.4.2 - 2021-05-14

  • Documentation changes
2021.05.15 20:06

Gtk3-ImageView-9

Image viewer widget for Gtk3
2021.05.15 18:47

OpenSMTPd-Filter-v0.0.1

Easier filters for OpenSMTPd in perl
2021.05.15 18:47

Acme-Prereq-D-0.03

Module for testing CPAN module prerequisites

Changes for 0.03

  • A (soon) problematic version
2021.05.15 18:21

Acme-Prereq-E-0.03

Module for testing CPAN module prerequisites

Changes for 0.03

  • A (soon) problematic version
2021.05.15 18:20

JSON-Schema-Tiny-0.003

Validate data against a schema, minimally

Changes for 0.003 - 2021-05-15T18:17:16Z

  • fixed error strings used for failing "dependentRequired"
  • keywords in the applicator vocabulary are now applied before the keywords in the validation vocabulary (true/false results are not affected, but the order of annotations and errors will change)
2021.05.15 18:18

JSON-Schema-Draft201909-0.027

Validate data against a schema

Changes for 0.027 - 2021-05-15T18:13:21Z

  • fixed error strings used for failing "dependentRequired"
  • in terse output format, do not discard non-summary errors from schema-form of items
  • keywords in the applicator vocabulary are now applied before the keywords in the validation vocabulary (true/false results are not affected, but the order of annotations and errors will change)
  • improved validation of the "date-time", "date" and "time" formats
2021.05.15 18:15

More…

Test-JSON-Schema-Acceptance-1.008

Acme-Prereq-Itself-0.01

Acme-Prereq-F-2.0.0

Acme-Prereq-E-0.02

Data-Dataset-ChordProgressions-0.0108

Acme-Prereq-F-1.0.0

Alien-libtiff-1

Acme-Prereq-E-0.01

Acme-Prereq-D-0.01

Acme-Prereq-C-0.01

Data-Dataset-ChordProgressions-0.0107

Robots-Validate-v0.2.2

Plack-Middleware-Text-Minify-v0.1.6

CPAN-Perl-Releases-5.20210515

Data-Alias-1.25_01

perl-5.34.0-RC2

Geo-Proj4-1.11

Geo-Proj4-1.10.0

Dist-Zilla-App-Command-kwalitee-0.04

Pg-Explain-1.08

Dancer2-Plugin-Auth-Extensible-0.710

Log-ger-Format-HashArgs-0.004

Log-ger-Format-HashArgs-0.003

Dancer2-Plugin-Syntax-ParamKeywords-0.2.0

Excel-Writer-XLSX-1.09

PGXN-Site-v0.20.1

Active questions tagged perl - Stack Overflow

Can't locate CPAN.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5

Perl 5.32.1 GDBM_File is incredibly slow

Perl: say and print, one more newline than expected? [closed]

Can't locate DBI.pm

some stuff not printed

How to delete selected duplicated line from file using perl script

Checking if a multi fasta file is Fasta format in Bash scripting [closed]

How can I call a shell function from a Perl script?

Calling Perl from a shell script, how do I pass a return value from Perl to the shell?

Return value from a Perl script

Device::HID read barcode scanner convert binary to Ascii

Perl: How to find and modify multiple expressions in a single string

Perl make string with two array elementwise [closed]

Regex to capture multilines from specific expression until first blank line in Perl

perl - Net::SSLeay and Server Name Indications

Detect how a subroutine is called in Perl

Error: Can't use an undefined value as an ARRAY reference

How to move files larger then 300KB to a different location with Perl

perl - access elements in hash of arrays of arrays

Use PPI to rewrite a subroutine in a package

News and Blogs

Articles on Perl.com - programming news, code and culture

Perl / Unix One-liner Cage Match, Part 1


A shell (like Bash) provides built-in commands and scripting features to easily solve and automate various tasks. External commands like grep, sed, Awk, sort, find, or parallel can be combined to work with each other. Sometimes you can use Perl either as a single replacement or a complement to them for specific use cases.

Perl is the most robust portable option for text processing needs. Perl has a feature rich regular expression engine, built-in functions, an extensive ecosystem, and is quite portable. However, Perl may have slower performance compared to specialized tools and can be more verb…

2021.05.12 02:54

Downloading and Installing Perl in 2021

[This article is part of our Popular articles project to update Perl.com for contemporary practices]

If you’re reading this article, you’re likely looking for a simple way to download and install the Perl programming language. Or you already have Perl installed as part of your operating system, but it’s older than the currently-supported versions (5.32.1 or 5.30.3) and you’d like to use the latest and greatest features. The download options may seem daunting, especially if you’re new to computers or programming. We’ll take things step by step, and soon you’ll be on your way to…

2021.04.27 04:05

Interview: Trying to Catch Paul "LeoNerd" Evans

Paul “LeoNerd” Evans is a CPAN author, blogger, and core Perl contributor. He introduced the experimental isa operator in Perl 5.32 and the try/catch syntax in an upcoming version.

Tell me a little about yourself and your background; whatever you feel comfortable sharing.

Lets see—I’m going to do this in reverse chronological order.

Currently I’m a self-employed contractor, splitting my time between Perl and other computery things, and electronics. Most of the jobs I’ve had before I did that were based on Perl, with the minor exception of a little Internet startup company called &ldqu…

2021.03.30 01:24

Why I wrote Net::Google::CivicInformation

Before I became a computer programmer, I tried my hand at being a human programmer, in the form of a wordsmith, as I called myself then. I had various jobs as a writer, editor, translator and journalist, but I met with little success, for two main reasons. In those days you needed a publisher to find your work interesting enough to publish before anyone could read it, and that was a pretty high bar. And in the second place, it was difficult to get the humans to react to the content I wrote (I’m still exercised that the movie reviewer would get more letters to the editor than I did after…

2021.03.09 19:35

The Hijacking of Perl.com

For a week we lost control of the Perl.com domain. Now that the incident has died down, we can explain some of what happened and how we handled it. This incident only affected the domain ownership of Perl.com and there was no other compromise of community resources. This website was still there, but DNS was handing out different IP numbers.

First, this wasn’t an issue of not renewing the domain. That would have been a better situation for us because there’s a grace period.

Second, to be very clear, I’m just an editor for the website that uses the Perl.com domain. This means that I’m…

2021.02.28 08:59

The Trouble with Reference Counting

Perl uses a simple form of garbage collection (GC) called reference counting. Every variable created by a Perl program has a refcnt associated with it. If the program creates a reference to the variable, Perl increments its refcnt. Whenever Perl exits a block it reclaims any variables that belong to the block scope. If any are references, their referenced values’ refcnt are either decremented or they’re reclaimed as well if no other references to them remain.

Benefits

Reference counting has some nice properties. As GC is deterministic, it is usually not a cause of variable program performance fr…

2021.01.25 12:05

The Perl Foundation

TPRC Newsletter - May 2021


Speaker schedule published

Thank you to everybody who sent in their expressions of interest for speaking at our conference. We are pleased over 30 speakers will give talks and presentations over the three day event and details can be found on the conference schedule

We want YOU to hold a BOF!

BOF stands for Birds of a Feather. These are informal get-togethers planned by attendees and can be on any topic, technical or not.

Have you got a BOF in mind? Why not set one up? Start by proposing and then promoting your BOF on the conference wiki. TPRC staff is happy to help facilitate a meeting space if y…

2021.05.14 11:55

Perl is part of Google's Season of Docs 2021


The Perl Foundation is among the thirty open-source software organizations that Google has chosen to participate in 2021's Season of Docs program. Through this program, Google will fund a comprehensive audit of Perl's core documentation collection, a project proposed by Jason McIntosh earlier this year.

For this project a hired expert will perform a gap analysis of the documentation's content and presentation. This work will compare the documentation's present state with Perl 7's goal to put a new focus on newcomers--while retaining the docs' role as a thorough reference for all programmers.

The…

2021.05.13 12:03

The support developers need - survey results and actions taken

Author: Andrew Solomon.

The Perl Foundation kicked off 2021 with a survey to find out how we (both the Perl Foundation and the broader Perl community) can make Perl more welcoming to beginners. In this blog we: * Describe who responded to the survey. * Summarise the types of support they need. * Explain the work TPF is now undertaking to address these needs. * Explain how you can help, and how the TPF can support you. * A link to the raw data (minus email addresses).

Who responded

Of the 513 respondents, 454 (88.5%) said they would welcome more support. For the purposes of this blog, we’re respon…

2021.05.10 06:47

Raku CI Bot Grant Report 2021-04

Regarding his Raku CI Bot grant, Patrick writes:

In April I didn't find much time to work on the Raku CI Bot grant, because non computer things required my time.

I added more API mappings to my clone of [the GitHub module](https:// github.com/fayland/perl6-WebService-GitHub). In particular I added relevant parts of the Checks, Pulls, OAuth and Issues APIs. I also rebased my changes on the fork of khalid who incidentally also started working on the GitHub API module. I then learned they started working on automatic binding generation based on the API description and offered to jump in.

I also clea…

2021.05.06 15:03

Community Affairs Team Transparency Report Update

The CAT would like to make some corrections, as well as address some of the comments and questions we received to the initial transparency report. The CAT plans to publish a separate statement in the coming days relating to general changes and improvements to the process.

The subject of investigations #1 and #2, as referenced in the previous transparency report and below in this document, is the same and therefore will be known as the Subject throughout this document. The other individual mentioned in the previous transparency report is not mentioned except under the Corrections section.

There h…

2021.05.02 02:45

March report of the Raku Development Grant of Jonathan Worthington

Jonathan writes:

March didn't see me doing that many grant hours; I was keeping my keyboard time down for the first half of the month, and then had a lot to catch up on in the second half (and still needed to avoid putting in more than a usual working day). On the upside, the time that was spent was productive: I got some way into implementing more of Raku's multiple dispatch semantics in terms of the new dispatcher. I've written a blog post about that work (although some of the work it covers was done during April).

Total time worked:: 7 hours 29 minutes

2021.04.19 15:21

blogs.perl.org

A Perl Community Dashboard

In this weeks TPF Marketing Committee meeting I made an elevator pitch for a "Perl Community Dashboard". It was well received so I have taken the action item to expound upon the idea here to gather more input. Understand this then as the minimum viable product to go from 0 to 1, something achievable that we can build upon.

The Goal:

Create a central web based "Dashboard" (think Grafana-ish) the brings together metrics from key Perl related websites (hereafter, mastheads) and potentially other channels such as social media or irc.

What is the "Business Outcome"?

The marketing committee can use thos…

2021.05.13 16:09

Perl Weekly Challenge 112: Canonical Path and Climb Stairs

These are some answers to the Week 112 of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in a few days (May 16, 2021). This blog post offers some solutions to this challenge, please don’t read on if you intend to complete the challenge on your own.

Task 1: Canonical Path

You are given a string path, starting with a slash ‘/’.

Write a script to convert the given absolute path to the simplified canonical path.

In a Unix-style file system:

- A period ‘.’ refers to the current directory

- A double period ‘..’ refers to the direct…

2021.05.13 14:10

Open Letter to the Perl Foundation Board

Dear TPF Board members,

We want to express our disappointment with the recent transparency reports and associated actions from the Community Affairs Team (CAT).

On Monday 19th March, a first Transparency Report was issued, which said that an individual had been investigated for (1) behaviour on IRC and Twitter, and (2) behaviour at a Perl event in 2019. The report also reported that they had "found many instances of communication which alone may not have constituted unacceptable behavior, but when taken together did constitute unacceptable behavior", but no further details were given on those. T…

2021.05.09 02:42

Monthly Report - April

Thanks for your support and encouragement ...

I had many ups and downs in the month of April. In all these, I have recieved plenty of supporting voices.

First, we had the start of Ramadan. I feel fortunate to be able to fast in this holy month. However I had to break my fast for two days because I suffered by Vertigo. Luckily I recovered very fast, thanks to ALLAH s.w.t.

As you all know, I have started taking part in the weekly challenge after rather a long break. Although I am only sharing solutions in Perl for the time being. Soon, I would start doing in Raku and Swift. Having said, I started l…

2021.05.07 04:50

Paws anyone?

Gee almost a year since my lat post. I better start posting again or Mohammad will catch up with me ;).

Been quite a year for every one on this big blue marble. I hope you are all good.

Ok here is the very short post for today.

I just did my first build and upload of PAWS to CPAN

Expect Version 0.43 to be up there later today some time.

It was a bit of an epic on my part as this whole releasing thingy, made some real bad goofs (deleting then checking in a folder), thank goodness for 'git revert' and getting the version number wrong.

Hopefully is comes out ok.

Look for more releases in the future.

judypng.png

2021.05.06 22:11

Perl Weekly Challenge 111: Search Matrix and Ordered Letters

These are some answers to the Week 111 of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in a few days (May 9, 2021). This blog post offers some solutions to this challenge, please don’t read on if you intend to complete the challenge on your own.

Task 1: Search Matrix

You are given 5x5 matrix filled with integers such that each row is sorted from left to right and the first integer of each row is greater than the last integer of the previous row.

Write a script to find a given integer in the matrix using an efficient search algorithm…

2021.05.05 22:48

Perl Hacks

Replacing CPAN RT

Two weeks ago, we learned that the CPAN Request Tracker was closing down early next year. I proposed a plan that CPAN authors could follow to ensure that their users can still find somewhere to report bugs in modules (and, perhaps more importantly, to see what bugs have already been reported in modules).

But that’s only part of the problem. In fact, it’s probably a minor part of the problem. If you’re an active CPAN author, then you probably already knew about the impending closure and had already made plans to deal with it. It’s likely that you had already moved your bug tracking to a new syst…

2020.12.16 17:24

RT – Action Plan for CPAN Authors

CPAN RT is going away. CPAN authors have until the beginning of March to extract any useful information from it.

RT is the “Request Tracker”, a bug tracking system that is written by Best Practical. For almost as long as I can remember, anyone who uploads a module to CPAN gets a free ticket queue for their module at rt.cpan.org. MetaCPAN assumes that’s where people should report bugs in your module and helpfully adds an “issues” link that goes to the appropriate page in RT.

But now that system is going away. It will be switched off on the 1st March 2021. The Perl NOC team is spread pretty thinly…

2020.12.06 12:40

Down the rabbit hole

Blog posts are like busses. You wait months for one and then two come along on consecutive days!

Yesterday I wrote about how we didn’t need a blogging platform for the Perl community – all we really needed was a good-looking feed aggregator. I mentioned Perlsphere as one such aggregator.

Then Matthew commented, saying that Perlsphere looked a bit broken as Dave Cantrell’s posts from a few years ago frequently pop up there as new posts. I had a quick look at the problem and couldn’t quite work out what was going on. His web feed seems valid, but Perlsphere didn’t seem to recognise the dates of th…

2020.09.18 15:24

Blogging for Perl

I think it was at YAPC Copenhagen in 2008 that a small group of us first discussed the idea of building a shared blogging platform for the Perl community. It was over a year later that we launched blogs.perl.org.

I remember a lot of discussions over that time where we tried to thrash out exactly what we wanted to build. I know that one of my main drivers was that I wanted to replace the journals feature of use.perl. For those of you too young to remember, use.perl was a Perl community web site from the dawn of time. The site ran Perl news on its front page, but users could also have their own j…

2020.09.17 20:10

The Best of Perl Hacks

What do you do when you’re stuck inside because Coronavirus means that your country is in lockdown? Well, you write a book, of course. Or, to be more accurate, you cobble together fifty or so old blog posts into a book.

So that’s what I’ve done. Now you can read some of your favourite Perl Hacks blog posts in a handy Kindle book. Other ebook marketplaces are, of course, available – but I haven’t had the time to make a version that’s available from anywhere else yet. That might follow if enough people ask for it.

The book is, predictably, called The Best of Perl Hacks and it’s available from Amaz…

2020.04.07 15:05

PerlCon Europe 2019

Last week I was in Riga for this year’s European PerlCon (the conference formerly known as YAPC::Europe). As has become traditional, here’s my report of the conference.

My conference began on Tuesday night at the pre-conference meet-up. Most people get into town on the night before the conference starts and the organisers always designate a local bar as a meeting place. This time, as the conference was being held in a hotel, the meeting place was a room in the hotel just outside the main conference room. It’s always good to meet up with friends who you might not have seen since the previous con…

2019.08.11 13:40

Perl Weekly newsletter

Grow Your Karma with a Job that Does Good! Perl role in Canberra, Australia

This organization is on the cutting edge of developing and delivering genomics and IT tools to improve crop performance and natural resource utilization. With their help, food security can be established around the world through the creation of new, pest-resistant crops and plant strains so basically, you’re contributing to curing world hunger!
2021.05.10 10:00

Big Dividends, Bigger Opportunity! Perl role with multiple location options

Online trading is big. Big dividends, big excitement, and big barriers for most people. Enter our client, an international financial company who believe online trading should be open and accessible to all. With a brand that enjoys global recognition and the kind of growth that stokes envy in their competitors, they’re looking to add a few good Perl developers to their expansive team.
2021.05.10 10:00

Vienna Does it Best. Perl Developer role in Vienna

After almost twenty years in business, our client has proven their success in the Austrian and German markets and are now expanding into the UK and Poland. With a corporate belief system that promotes transparency, quality content, and a user-friendly experience, it’s no wonder they’re breaking into new markets and have an opening for a Perl programmer.
2021.05.10 10:00

A New Adventure is only a Click Away. Perl Developer role, remote within UK

Our client knows all about what drives a person to move on from a stagnant job. An international company whose servers are home to more than 80% of the UK’s job ads, they are the first and last stop for many recruiters, employers, and workers. Looking for a perl developer to join their team. Remote role within the UK.
2021.05.10 10:00

A Role that Makes Dollars (and Cents). Perl Developer Role in London

As one of the leading providers of premium native advertising for the financial services, technology, corporate, and lifestyle sectors, our clients develop the targeted advertising that makes their online users sit up and take notice. This role makes good dollars and cents for one dedicated senior Perl/JS programmer.
2021.05.10 10:00

The Perl and Raku Conference in the Cloud 2021

Online 8-10 June 2021.
2021.05.10 10:00

Perl

Live coding session with Gabor Szabo

Today I was invited to join Gabor Szabo for a live pair programming session, where we worked on adding Docker and CI to his course management application. You can view the video of our informal competition who is the worst typist here.

At first I was bit skeptical about the concept of live coding (who wants to watch people google^w code for two hours?), but in the end it was a funny and informative (for me) session. Maybe I'm just totally deprived of live human interaction (thanks, Corona), but I think I'd enjoy similar sessions also under normal circumstances.

Things I learned
  • I forgot a lot of…

Two Dist::Zilla questions (META.yml; user config)

During the great RT will be shutdown craze earlier this year, I updated my Dist::Zilla setup to use a custom author bundle (Dist::Zilla::PluginBundle::Author::DOMM) so I can unify my Dist::Zilla config in one place (instead of copying dist.ini from project to project, adding & modifying it from time to time, but never backporting improvements to older projects).

Two of my decisions might have been not too smart (as indicated by various pull requests), so I'm now looking for feedback...

META.yml vs META.json?

I stopped generating META.yml files and now only generate META.json. As far as I can tell…

Bulk downloading all episodes of a podcast

In some regards, I'm a very old school person. For example I do not like the concept of streaming audio (via Spotify et.al.). I want MP3s on my hard disk (and/or vinyl on my record player). I want access to my music when I'm offline (and I'm offline a lot) and without using a so-called smart phone (I prefer vintage USB-stick MP3 players). My partner thinks the same (I guess 25+ years of my propaganda had some influence..).

But "modern" sites make it rather hard to actually download content (even if it's free). They offer links to a myriad of apps, but often no download button. At least a lot of…

Advent of Code Day 12 - sailing to a pause

This was another fun one. It took me some time to get the logic right (or left?), but in the end I came up with a nice solution. BTW, this will be the last daily blog post, as I'll have to finish some work projects, and start with some holiday projects.

https://adventofcode.com/2020/day/12

Part 1
my @in  = map { [/^(\w)(\d+)$/] } <>;
my @dir = qw(N E S W);
my $cur = 1;
my $r   = 0;
my $c   = 0;

We again parse the map into a list of ops and values. Then we set up some things we'll need, like the list of directions and the current heading ($cur) which is an index into the dir-array. $r and $c

Advent of Code Day 11 - slow SeatGoL

Finally, some Game of Life

https://adventofcode.com/2020/day/11

Part 1

Today I needed quite a bit of code, so let's split it up:

my @map = map { chomp; [ split // ] } <>;
my $h   = @map;
my $w   = $map[0]->@*;
my $occ = 0;
my $max = 4;
my @around =
    ( [ -1, -1 ], [ -1, 0 ], [ -1, 1 ], [ 0, -1 ], [ 0, 1 ], [ 1, -1 ], [ 1, 0 ], [ 1, 1 ] );

After getting the input and storing it into a 2-dimensional list, I set up some other things we'll need: the **h**eight and **w**idth of the map, the number of occupied seats, the maximum number of neighbors and a list of "vectors" to look around (left…

Perl-Academy.de Blog

Kommandozeilenwerkzeuge mit App::Cmd

Das Schreiben von CLI-Tools erfordert einiges an Infrastrukturcode, um ein komfortables Tool mit Kommandos zu erstellen. Teile dieses Codes gleichen sich bei der Implementierung von Unterkommandos. Die Distribution App::Cmd hilft mit Mitteln der objektorientierten Entwicklung dabei, ein komfortables CLI-Tool schnell und erweiterbar zu implementieren.
2021.02.15 10:00

An Modul-Autoren: Badges für CPANCover

Sowohl für Nutzer als auch für Entwickler ist es ganz schön, wenn auf einen Blick der Zustand eines Moduls ersichtlich ist: Sind Fehler bekannt? Kann das Projekt gebaut werden? Wie ist die Testabdeckung?
2021.02.09 10:00

CPAN-News Januar 2021

Der Januar ist rum, Zeit mal nachzuschauen was wir im Januar so alles auf CPAN geladen haben.
2021.02.06 10:00

Sicherheit für Perl-Anwendungen: fail2ban

Ist eine Webanwendung öffentlich erreichbar, wird es nicht lange dauern und irgendwelche Bots versuchen sich anzumelden. Oder es werden wild irgendwelche URLs aufgerufen. Auch wenn die Anmeldeversuche wahrscheinlich scheitern, geht die Bot-Aktivität zu Lasten der Webanwendung. Und mit genügend versuchen klappt es vielleicht doch mal, dass sich jemand Unbefugtes anmeldet.
2021.02.03 10:00

User Story Mapping Teil 1

In der agilen Software-Entwicklung wird oft die formale Korrektheit von User Storys über ihren eigentlichen Zweck gestellt: Die Beteiligten erzählen einander Geschichten aus Anwendersicht. Während der Umsetzung der Software verlieren Beteiligte zudem oft den Blick »auf’s große Ganze«. Die Methode »User Story Mapping« möchte helfen, diese Probleme zu beheben und durch die enstehende Software das Leben der Anwender verbessern.
2021.01.28 10:00

Geodaten in Bildern und Videos können viel über Nutzer verraten

Am vorvergangenen Wochenende (9./10. Januar 2021) gab es relativ viel Wirbel um die Plattform Parler, die offensichtlich als Twitterersatz für hauptsächlich amerikanische "Konservative" diente. Amazon Web Services (AWS) kündigte Parler alle Services, da dort jede Menge Hass verbreitet wurde. Bevor alles abgeschaltet war, wurden wohl alle öffentlich verfügbaren Daten über ein API heruntergeladen. Ein paar der Fehler, die bei dem API gemacht wurden, werde ich kurz in der Schulung im März erläutern.
2021.01.19 10:00

DEV Community

Releases of Perl distribution of Crypt::OpenSSL::X509 1.904 and 1.905 - a story about epic failure

I have for some time been the maintainer of the Perl distribution: Crypt::OpenSSL::X509. The implementation is a wrapper on the OpenSSL C libraries, relying on XS.

I took over the maintenance from Dan Sully, because we where using the distribution at work and it need some maitaining. O am not a C-programmer, XS wizard or compiler expert - anyway I thought I could learn something from taking on the maintainer role.

Over time I have made releases, when there was something obvious or somebody sent PRs to the repository.

Way too seldom, I would check the CPAN testers reports to see how things were go…

2021.05.13 15:25

Release 1.54 of perl-workflow, a minor feature release

Release 1.54 has been released, but I could not find the time to write a proper announcement, so with some delay here goes.

The release is a minor feature release, in adds a few improvements in regard to making some APIs public, promoting these from private APIs (please see the Change log below for details). The private APIs are kept intact for backwards compatibility, in case somebody has implementations relying on these.

Also the documentation has had some improvements, in regard to removal of parts, which made no sense based. It might have been design notes more than actual implementation doc…

2021.05.13 12:19

Weekly Challenge 112

Challenge, My solutions

TASK #1 › Canonical Path Tasks

You are given a string path, starting with a slash /.

Write a script to convert the given absolute path to the simplified canonical path.

My solution

Outside the challenge, I would use the swiss army-knife of Path::Tiny to do this. Regularly readers of my blog post will know that I don't use modules outside Perl core in completing a task.

Therefore I split the supplied path by each forward slash into @parts. I then take three actions depending on the part.

  • If it is empty, do nothing. This handles the first slash, the trailing slash, and any…
2021.05.12 12:31

Testing Perl: To plan or not to plan

Let’s assume for the moment that you’re writing a Perl module or application. You’d like to maintain some level of software quality (or kwalitee), so you’re writing a suite of test scripts. Whether you’re writing them first (good for you for practicing test-driven development!) or the application code is already there, you’ll probably be reaching for Test::Simple, Test::More, or one of the Test2::Suite bundles. With the latter two you’re immediately confronted with a choice: do you count up the number of tests into a plan, or do you forsake that in favor of leaving a done_testing() call at the…

2021.05.11 14:00

Perl modules loading, calling or returning

Modules (and CPAN) are one of the "killer feature" of Perl, this article will discuss module loading/calling and some subtleties around this topic.

Where modules live do not dictate how they are called.

It is something important to understand early when you learn Perl programming, how you will load a module does not dictate its future package name (how it will be called).

Let's start with a simple example with a empty module stored in a File.pm in a subdirectory:

Directory
└── Directory
    └── File.pm

File.pm contains nothing but a true return value:

1;

The import is done by pointing to the path…

2021.05.11 11:58

Tools for learning Perl context

There are times when I am confused by the context of Perl. I wrote a tool to reduce this confusion.

GitHub logo kfly8 / p5-Contextual-Diag diagnose contexts Usage

If you plug in the contextual_diag subroutine where you want to know Perl context, it will alert you to the context.

The following code explores the context when evaluating the value of a hash reference:

use Contextual::Diag;

# Here...
my $a = { key => 'value' };

# Do this...
my $a = { key => contextual_diag 'value' };

# Then this happens!
# => wanted LIST context
Inside Contextual::Diag

In Contextual::Diag, the first step is to use…

2021.05.10 12:41

RabbitFarm

Efficient Matrix Search: The Weekly Challenge 111

The examples used here are from the weekly challenge problem statement and demonstrate the working solution.

Part 1

You are given 5x5 matrix filled with integers such that each row is sorted from left to right and the first integer of each row is greater than the last integer of the previous row. Write a script to find a given integer in the matrix using an efficient search algorithm.

Solution

use strict;
use warnings;

use boolean;      
use constant MATRIX_SIZE => 5;   

sub matrix_search{
    my($matrix, $search) = @_;
    unless(@{$matrix} == 1){  
        my $half = int(@{$matrix} / 2…
2021.05.09 23:58

Checking Phone Numbers and Transposing Tabular Data the Hard Way: The Weekly Challenge 110

The examples used here are from the weekly challenge problem statement and demonstrate the working solution.

Part 1

You are given a text file. Write a script to display all valid phone numbers in the given text file.

Solution

use Capture::Tiny q/capture_stdout/;
use PhoneNumberParser;

MAIN:{
    my $parser = new PhoneNumberParser();
    while(my $line = ){
        $line =~ s/^\s+|\s+$//g;
        my $syntax_error = capture_stdout {
            $parser->parse($line); 
        };
        print("$line\n") if !$syntax_error;
    }
}   

__DATA__
0044 1148820341
 +44 1148820341
  44-11-4882-0341
(44…
2021.05.02 19:03

Chowla Numbers and Numbers in Boxes: The Weekly Challenge 109

The examples used here are from the weekly challenge problem statement and demonstrate the working solution.

Part 1

Write a script to display the first 20 Chowla Numbers.

Solution

use strict;
use warnings;
use constant CHOWLA_COUNT => 20;
sub factor{
    my($n) = @_;
    my @factors = ();
    foreach my $j (2..sqrt($n)){
        push @factors, $j if $n % $j == 0;
        push @factors, ($n / $j) if $n % $j == 0 && $j ** 2 != $n;
    }    
    return @factors;  
}

sub chowla{
    my(@factors) = @_;
    my $sum = unpack("%32I*", pack("I*", @factors)); 
}

MAIN:{
    my @chowla_numbers;
    for my…
2021.04.25 16:00

Memory Addresses and Bell Numbers: The Weekly Challenge 108

The examples used here are from the weekly challenge problem statement and demonstrate the working solution.

Part 1

Write a script to declare a variable or constant and print it’s location in the memory.

Solution

use strict;
use warnings;
use Devel::Peek;
use Capture::Tiny q/capture_stderr/;
use constant A => "test";
my $a = 1;    
my $address;  
my $stderr = capture_stderr {
    Dump(A)
};
$stderr =~ m/at\s(0x.*\n).*/;
$address = $1;  
chomp($address);
print "Address of constant A: $address\n"; 
$stderr = capture_stderr {
    Dump($a)
};
$stderr =~ m/at\s(0x.*\n).*/;
$address = $1;  
chomp($addr…
2021.04.18 15:55

Static Analysis and Self Describing Numbers (now with Threads!): The Weekly Challenge 107

The examples used here are from the weekly challenge problem statement and demonstrate the working solution.

Part 1

Write a script to generate self-descriptive numbers.

Solution

use strict;
use warnings;
use Thread; 
use boolean;
use constant SDN_COUNT => 3;
use constant THREAD_COUNT => 4;
use constant RANGE_SIZE => 10_000;

sub self_describing{
    my($i) = @_;
    my @digits = split(//, $i);
    for my $x (0 .. @digits - 1){
        my $count = 0;
        for my $j (0 .. @digits - 1){
            $count++ if($digits[$j] == $x);
            return false if($count > $digits[$x…
2021.04.11 17:51

Recursion and Repeated Decimals: The Weekly Challenge 106

The examples used here are from the weekly challenge problem statement and demonstrate the working solution.

Part 1

You are given an array of integers @N. Write a script to display the maximum difference between two successive elements once the array is sorted.

Solution

use strict;
use warnings;
sub max_difference_sorted{
    my(@sorted) = @_;
    return 0 if(@sorted == 1);
    my $x = $sorted[1] - $sorted[0];  
    my $y = max_difference_sorted(@sorted[1 .. @sorted - 1]);   
    return ($x > $y)? $x: $y; 
}

sub max_difference{
    my (@numbers) = @_;
    return max_difference_sorted(
        so…
2021.04.04 17:04

The Perl NOC

Weekend Outage

You may have noticed that some perl.org services were unavailable this weekend.  Email continued to flow, and no data was lost.

The short version of the story is that we were bitten by this bug. and learned a lot about how Kubernetes works while we figured out what the issue was.

Sorry for any inconvenience!

2021.05.09 21:29

CPAN Mirror List Changes

We sent the below email to all the CPAN Mirror contacts yesterday:

An Important Update about the CPAN Mirror List

You're receiving this email because you're listed as a contact point for a CPAN mirror. Thank you! The mirror network has been a huge part of CPAN’s success. Soon, the way clients use CPAN mirrors is changing. You don't need to do anything, but after reading this email, you might want to.

Some background: For a long time, when the CPAN client (aka CPAN.pm) started up for the first time, it prompted users to configure it by picking a nearby mirror. The assumption was that it would be b…

2021.02.22 09:39

perl.com hijacked

 The perl.com domain was hijacked this morning, and is currently pointing to a parking site.  Work is ongoing to attempt to recover it.

 We encourage you NOT to visit the domain, as there are some signals that it may be related to sites that have distributed malware in the past.

  Some users may have it selected as their CPAN mirror.  To update your mirror in CPAN.pm use o conf urllist http://www.cpan.org/

# perl -MCPAN -eshell
cpan shell -- CPAN exploration and modules installation (v2.20)
Enter 'h' for help.

cpan[1]> o conf urllist http://www.cpan.org/
Please use 'o conf commit' to make the config perma…

2021.01.27 20:01

rt.cpan.org will sunset on March 1st, 2021

Update 2/21/2021:

Updated information about the future of rt.cpan.org can be found at https://news.perlfoundation.org/post/rt-cpan-org-future

Update 2020-12-13:

rt.cpan.org will be sunset on March 1st, 2021 due to low and declining use.

Back when we started this service, it filled a need by providing a place for CPAN authors to track bug reports and feature requests. In recent years github.com and other sites have added issue tracking to their git repo hosting and many CPAN authors have migrated to these sites.

If you are a CPAN author, there are several tools to help you migrate existing tickets:

    • h…
2020.12.04 17:40

cpan.org email supported by Pobox

Earlier this year we quietly switched the infrastructure that forwards ${author}@cpan.org email addresses from our home-grown solution to Pobox’s Bulk Forwarding system. Our system wasn’t keeping up with the spam-filtering needs of these widely published email addresses.

Pobox is now detecting over 93% of the incoming email to @cpan.org as spam and taking care of it. That’s tens of thousands of spam emails a day that aren’t forwarded on. (Almost 2.5 million emails a month!) Said another way -- less than 7% of emails sent to @cpan.org are valid!

Beyond improved spam filtering, there’s also better…
2020.04.27 21:19

Perl bugs now on GitHub


For over 17 years, the Perl NOC has hosted an RT instance for Perlbug, the system that tracks and manages Perl bugs and feature requests.  Two weekends ago, it transitioned to GitHub.    Background is available in this thread.
We'd especially like to thank Todd Rinaldo who led the migration and did most of the work.  His attention to detail cannot be understated.  17 years of data (some of which had been migrated to RT from the previous system) required a lot of tweaking and polishing to make it look nice.  His hard work shows in the result.
It's been fun and interesting to support this particular piece…
2019.10.30 20:56

perlancar's blog

Disk space usage of CPAN authors (May 16, 2021 edition)

Prompted by this post on PAUSE running out of disk space, I thought I'd refresh my own post "Top 50 authors by disk space on BackPAN" (Dec 26, 2019) and add a stat for CPAN too. Hopefully this will be a regular post, ish.

On CPAN

Source: https://www.cpan.org/indices/find-ls.gz (~14MB as of this writing), but more readily used: https://www.cpan.org/indices/du-k.gz (~80KB as of this writing).

Total size of CPAN:

% zcat du-k.gz | perl -lne'@F=split /\s+/, $_, 2; $F[1] eq "." and printf "%.1fGB\n", $F[0]/1024/1024 and last'
29.0GB

So, CPAN is not that big by today's…

2021.05.16 08:48

List of new CPAN distributions – Apr 2021

dist author version abstract
Acme-Brainbuz-markdown BRAINBUZ 0.001 turns baubles into trinkets
Acme-CPANModules-BrowsingTableInteractively PERLANCAR 0.001 Creating a palette of visually distinct colors
Acme-CPANModules-CreatingPaletteOfVisuallyDistinctColors PERLANCAR 0.001 Creating a palette of visually distinct colors
Acme-Markdown-Embarrassing CONTRA 0.01 Testing the MetaCPAN Markdown converter
Alien-OpenMP ETJ 0.001 Encapsulate system info for OpenMP
App-Greple-ical UTASHIRO 0.01 Module to support Apple OS X Calendar data
App-MigrateToTest2V0 UTGWKK 0.01 Migrate your tests from Test::More to Test2::V0
App-ProxyThat SIMBAB…
2021.05.01 00:37

List of new CPAN distributions – Mar 2021

dist author version abstract
Acme-Automatix CONTRA 0.01 The great new Acme::Automatix!
Acme-CPANModules-Frameworks PERLANCAR 0.001 List of frameworks on CPAN
Acme-MetaSyntactic-legodcsupervillains BINGOS 0.02 LEGO DC Super Villains theme
Acme-MetaSyntactic-legotheincredibles BINGOS 0.02 LEGO The Incredibles theme
Alien-uPB-Core MBARBON 0.16 build and find uPB (a.k.a. Unleaded)
App-PerlNitpick GUGOD 0.01 change-suggester about insignificant details.
App-ThisDist-OnMetaCPAN PERLANCAR 0.001 this-dist-on-metacpan and some other CLIs
App-dateseq-id PERLANCAR 0.001 Generate a sequence of dates
App-knradio WOLDRICH 0.044 interface for knr…
2021.04.01 11:26

List of new CPAN distributions – Feb 2021

dist author version abstract
Acme-CPANModules-HaveWebsite PERLANCAR 0.001 Modules that have their own website
Acme-CPANModules-Sudoku PERLANCAR 0.001 Sudoku-related modules on CPAN
Algorithm-Backoff-RetryTimeouts GSG v1.0.0 A backoff-style retry algorithm with adjustable timeout support
Alien-LibJQ DONGXU 0.01 Build libjq library (https://stedolan.github.io/jq/)
Antsy BDFOY 0.901 Streaming ANSI escape sequences
App-FilePacker SYMKAT 0.001 Embed a self-extracting tarball in a Perl module.
App-StatisticsUtils PERLANCAR 0.001 CLI utilities related to statistics
CGI-remote_addr GTERMARS 0.03 Enhanced version of CGI.pm's "…
2021.03.01 01:22

List of new CPAN distributions – Jan 2021

dist author version abstract
Acme-CPANModules-ContainingJustData PERLANCAR 0.002 Modules that just contain data
Acme-CPANModules-PERLANCAR-Forked PERLANCAR 0.002 List of my modules which are forked from others
Acme-CPANModules-UUID PERLANCAR 0.001 Modules that can generate immutable universally unique identifier (UUIDs)
Acme-ConspiracyTheory-Random TOBYINK 0.001 random theories
Acme-STEVEB STEVEB 0.43 One line description
AnyEvent-Discord NMELNICK 0.1 Provides an AnyEvent interface to the Discord bot API
Apache2-SSI JDEGUEST v0.1.0 Apache2 Server Side Include
App-Device-Chip-sensor PEVANS 0.01 Base class to build Device::Chip…
2021.02.01 00:53

CPAN vs Hackage releases, Part 1

Back in mid-November 2020, I noticed that Hackage (the Haskell package repository) probably has roughly the same daily upload rate as CPAN, or even higher.

Since the Hackage API does not provide a way to list releases (uploads), I had to download the recent additions page periodically, parse each page, and merge the results into a single large list. Because I have just collected the recent additions page since mid-November, I'm looking at December 2020 period.

% http-tiny-plugin-every --every 3h http://hackage.haskell.org/packages/recent --dir . --trace
% for f in 2*.log; do parse-hackage-page…

2021.01.03 04:40

# where we turn Perl inside out

(cccxli) 15 great CPAN modules released last week

Updates for great CPAN modules released last week. A module is considered great if its favorites count is greater or equal than 12.

  1. Alien::Build - Build external dependencies for use in CPAN
    • Version: 2.40 on 2021-05-13
    • Votes: 19
    • Previous version: 2.38 was 4 months, 2 days before
  2. Data::Alias - Comprehensive set of aliasing operations
    • Version: 1.25 on 2021-05-11
    • Votes: 15
    • Previous version: 1.24 was 10 days before
  3. Devel::NYTProf - Powerful fast feature-rich Perl source code profiler
    • Version: 6.10 on 2021-05-09
    • Votes: 168
    • Previous version: 6.07 was 1 month, 3 days before
  4. Encode - character encodings in Perl
    • Ver…
2021.05.15 21:13

(cdlxvii) metacpan weekly report - Type::Tiny

This is the weekly favourites list of CPAN distributions. Votes count: 36

Week's winner: Type::Tiny (+2)

Build date: 2021/05/15 18:56:34 GMT


Clicked for first time:


Increasing its reputation:

2021.05.15 20:56

(cdxc) stackoverflow perl report

(cccxl) 17 great CPAN modules released last week

Updates for great CPAN modules released last week. A module is considered great if its favorites count is greater or equal than 12.

  1. CGI - Handle Common Gateway Interface requests and responses
    • Version: 4.52 on 2021-05-04
    • Votes: 40
    • Previous version: 4.51 was 6 months, 30 days before
  2. Crypt::JWT - JSON Web Token
    • Version: 0.033 on 2021-05-01
    • Votes: 15
    • Previous version: 0.032 was 1 month, 14 days before
  3. Data::Alias - Comprehensive set of aliasing operations
    • Version: 1.24 on 2021-05-05
    • Votes: 15
    • Previous version: 1.23 was 7 days before
  4. DateTime::Format::Strptime - Parse and format strp and strf time patterns
    • Vers…
2021.05.08 19:45

(cdlxvi) metacpan weekly report - Faster::Maths

This is the weekly favourites list of CPAN distributions. Votes count: 47

Week's winner: Faster::Maths (+4)

Build date: 2021/05/08 17:39:31 GMT


Clicked for first time:


Increasing its reputation:

2021.05.08 19:42

(cdlxxxix) stackoverflow perl report

Perl Jobs

Senior PERL Developer, Anywhere in India (TCS)

• Excellent communication skills – you communicate complexity verbally and in writing in a way that everyone can understand.
• Drive, strong organisational skills, and the ability to work independently as well as in a team.
• Design, develop, deploy, test and maintain highly scalable solution in OO Perl.
• Working through a backlog of revisions, new features and bug fixes on our eComm Platform
• Assisting with technical documentation of Solution Design
• Estimating effort of features and functions
• Ability to understand and write JavaScript
• Ability to understand and write JSON/XML
• Ability…
2021.05.14

DevOps Sysadmin/Engineer/Perl Dev, San Diego, CA (GreenRope)

US citizens only.

Friendly remote working team. To see what we do visit greenrope.com.

We have a mixture of co-located hardware and cloud instances, and are migrating more to the cloud.

It's a bonus if you can occasionally work on site but not a requirement.

The perfect candidate will have a passion for system administration, and Perl development, with good communication, self motivation, and conscientious work, with a strong and proven level of experience and results.

Initially the role will be heavily sysadmin oriented, but progress into a mixed sysadmin/Perl web development position sharing…
2021.05.10

Perl Developer - 100% remote, Birmingham Alabama ((BAM))

Job Description:
The Web Application Developer-PERL is responsible for developing and supporting the continued growth of internal and external applications. They must be able to create effective efficient program code based upon detailed specifications with periodic support and direction by more senior staff development team. They will be working with both front end web based applications as well as back end applications that support our business needs. They will be a self-started, high energy, action oriented person. Prefer a background in PERL but will also consider experience in Ruby, Pytho…
2021.05.06

Lead Perl Developer - on site, Birmingham, Alabama ((BAM) Books a Million)

Job Description:

The Web Application Developer-PERL is responsible for developing and supporting the continued growth of internal and external applications. They must be able to create effective efficient program code based upon detailed specifications with periodic support and direction by more senior staff development team. They will be working with both front end web based applications as well as back end applications that support our business needs. They will be a self-started, high energy, action oriented person. Prefer a background in PERL but will also consider experience in Ruby, Pytho…
2021.05.06

Software Developer - PERL, Houston, TX (Remote) (cPanel)

This position will assist in the maintenance, development and implementation of existing software systems and/or applications for market sale. Participates in the full development life cycle and consults with senior peers on non-complex projects.

Essential Functions:

Creates code specification proposals and prototypes for review by team and stakeholders
Develops well designed, testable, and efficient new code and modifies existing code based on stakeholder requirements for cPanel products and systems
Documents code in detail for future reference
Participates in the use of established developme…
2021.04.29

Senior Perl Developer Roles (Yes multiple roles), Sydney (Winc)

• Excellent communication skills – you communicate complexity verbally and in writing in a way that everyone can understand.
• Drive, strong organisational skills, and the ability to work independently as well as in a team.
• Design, develop, deploy, test and maintain highly scalable solution in OO Perl.
• Working through a backlog of revisions, new features and bug fixes on our eComm Platform
• Assisting with technical documentation of Solution Design
• Estimating effort of features and functions
• Ability to understand and write JavaScript
• Ability to understand and write JSON/XML
• Ability…
2021.04.29

Backend Web Developer, Billerica, Massachusetts (LiquidPixels, Inc.)

LiquidPixels, Inc., is searching for a full-time Software Developer to join our primary engineering team. The ideal candidate will have experience programming backend Web APIs, including deep knowledge of web architecture, Perl, and MariaDB on a LAMP platform.

Please check out the full description at the link below
2021.04.27

PERL/RDBMS SOFTWARE DEVELOPER, Fort Lauderdale, FL, United States (Bio-Tech Medical Software, Inc.)

BioTrack, a Forian, Inc. company, develops cutting-edge seed-to-sale tracking technology called BioTrack, for the emerging cannabis industry.

We actively seek a strong PERL/RDBMS Software Developer to join our fast-paced, results-oriented culture. The ideal candidate is a highly motivated self-starter committed to quality software and a real a team player with strong communications skills. If you enjoy the unpredictable, rapid nature of a startup environment, coupled with the opportunity to help change the world through innovative technology solutions, then we want to hear from you!

Duties and…
2021.04.24