Perl Weekly Challenge 229: Two out of Three

These are some answers to the Week 229, Task 2, of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in a few days from now (on August 13, 2023 at 23:59). 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 2: Two out of Three

You are given three array of integers.

Write a script to return all the elements that are present in at least 2 out of 3 given arrays.

Example 1

Input: @array1 = (1, 1, 2, 4)
       @array2 = (2, 4)
       @array3 = (4)
Ouput: (2, 4)

Example 2

Next stable DBD::SQLite will be released at the beginning of November

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 fixes and changes.

This time I'll wait for about a week and release 1.72 at the beginning of November if there's no blocker nor request to wait for more. Thank you for your patience.

Buy a Perl 5.36 mug and support The Perl Foundation

Mugs celebrating Perl 5.36 are now available at The Perl Store with all proceeds going to The Perl Foundation

p536mug.jpg

Class::Plain supports Role using Role::Tiny


Class::Plain was released at at 2022-09. This time, Class::Plain supports role using Role::Tiny at version 0.05.

Perl Weekly Challenge 229: Lexicographic Order

These are some answers to the Week 229, Task 1, of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in a few days from now (on August 13, 2023 at 23:59). 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: Lexicographic Order

You are given an array of strings.

Write a script to delete element which is not lexicographically sorted (forwards or backwards) and return the count of deletions.

Example 1

Input: @str = ("abc", "bce", "cae")
Output: 1

In the given array "cae" is the only element which is not lexicographically sorted.

Example 2

Frankfurter Perl Workshop 2022 - 6.11.2022

Hello everybody,

we hold the Frankfurter Perl Workshop on the 06. November 2022 in Frankfurt am Main. This is mostly a German-language event, so I'll just repost the German announcement:

Hallo zusammen,

am Sonntag, dem 06. November 2022 veranstalten wir wieder den Frankfurter Perl Workshop. Der Workshop findet wie 2019 im Haus der Jugend statt.

Mystery Buglet #2

Hey! I know, I know: long time, no blog.  I would love to blame the pandemic, but the truth is, I just haven’t been inspired with any sufficiently Perl-y topics lately.  Until recently, when I ran into this.

Now, once upon a time, I wrote a post about a small buglet I had encountered.  The post presented the problem, then asked you if you saw the problem, then explained what was going on.  So let’s do that again.  First, the code:
sub generate_temp_file
{
state $TMPFILES = [];
END { unlink @$TMPFILES }
my $tmpfile = `script-which-generates-tempfile`;
chomp $tmpfile;
push @$TMPFILES, $tmpfile;
return $tmpfile;
}

As before, the actual code does a bit more, but I promise I’ve omitted nothing that’s relevant to the bug.  Do you see it?  If not, click to find out more.

The deep, the shallow and the ugly (classes)

Previously I showed parts of the API of my new module Graphics::Toolkit::Color. This time I want to mention some bits about the code base, which demonstrate what I tried to say long ago (sorry for the long delay i hope I can complete the series).

Perl Weekly Challenge 228: Empty Array

These are some answers to the Week 228, Task 2, of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in a few days from now (on August 6, 2023 at 23:59). 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 2: Empty Array

You are given an array of integers in which all elements are unique.

Write a script to perform the following operations until the array is empty and return the total count of operations.

If the first element is the smallest then remove it otherwise move it to the end.

Example 1

Meet jp

Welcome

Please welcome the latest JSON tool for the command line: jp!

jp (mostly named from the Mojolicious class Mojo::JSON::Pointer that makes jp possible) is a command line tool for quickly extracting data from a JSON object.  How many times do we get a complex JSON object from some command and we just need to extract a specific set of values from it?  Every time!  All the time!  Often, people use basic tools like grep and sed.  Most people reach for jq, but I find the syntax too cumbersome to use just to extract my desired data.  I just want to use JSON Pointers and move on, but, indeed, sometimes JSON Pointers aren't even enough.  jp really shines with some helpful command line arguments, a regular expression JSON Pointer syntax, and, finally, a Perl eval argument for total power.

Get on with it

Let's see jp work.  Each example explainer links to the JSON Object used for the example.

Here's the most basic use.

$ jp /server/0/password < t/json1.json

REDACTED_APIKEYfalse

Sending a simple email

To have a secure SMTP delivery, use Email::Sender. Mail::Sendmail uses SMTP for transport and there's no other type of transport. It does not support SMTP authentication, which my SMTP server now requires even for access from localhost. From what I read and tried once or twice in the past, the current "best practice" or recommended way is to use Email::Sender. Here's an incantation to send mail using sendmail:

use Email::Sender::Simple qw(sendmail);
use Email::Simple;
use Email::Sender::Transport::Sendmail qw();
use Try::Tiny;my $email = Email::Simple->create(
header=>[To=>$to, From=>$from,
Subject=>$subject],
body=>$body,
);try {
sendmail($email,
{from=>$from,
transport=>Email::Sender::Transport::Sendmail->new});
} catch {
print "Can't send mail: $_";
}
  • It's easy to switch transport to SMTP (just change two lines).

  • It's easy to add SMTP authentication (just pass arguments to transport constructor).

  • It's easy and clear where to add custom email headers (whereas in Mail::Sendmail, some arguments are "magical"/processed, they do not correspond 1:1 to headers).

  • It's easy to construct multipart email (construct the appropriate $email object).

In addition:

  • Envelope sender and RFC822 From is clearly separated, forcing beginners to understand the concept.

So there you have it, sending an temp email in Perl the modern way. No longer apt for one-liners though.

course change for Kephra

Kephra, an editor for programming (mostly Perl) written in WxPerl is my main project since I stumbled into the Perl community. Most people I know already heard of it - but I want to write about a new development that might be helpful for some, which might consider to use it even if it has a very limited feature set (forth rewrite baby!).

Perl Weekly Challenge 228: Unique Sum

These are some answers to the Week 228, Task 1, of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in a few days from now (on August 6, 2023 at 23:59). 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: Unique Sum

You are given an array of integers.

Write a script to find out the sum of unique elements in the given array.

Example 1

Input: @int = (2, 1, 3, 2)
Output: 4

In the given array we have 2 unique elements (1, 3).

Example 2

TPF launches merch store for Perl 5

TPF has launched an online store with Perl merchandise (swag) celebrating the Perl 5.36 release. The marketing committee plan to do a custom celebratory collection for each release of Perl with revenue from each sale goes to TPF's Perl fund.

The store includes long- and short-sleeved t-shirts, sweatshirts, hoodies and stickers - all featuring a new Raptor image for the 5.36 release.

800.jpga800.jpg

From: https://news.perlfoundation.org/post/tpf-merch-store

My Perl Weekly Challenge

Really, how hard could it be?

All this talk about types, objects, and systems, got me to thinking, "what would it take to create a 100% backwards-compatible pure Perl proof-of-concept for optionally typable subroutine signatures". I mean really, how hard could it be? So I started sketching out some ideas and here's what I came up with:

use typing;

sub greet :Function(string, number) :Return() {
  my ($name, $count) = &_;

  print "Hi $name, you have $count messages waiting ...\n";
}

Class::Plain - Class Syntax for Hash-Based Perl OO

Class::Plain provides a class syntax for the hash-based Perl OO.

Usage

Perl Weekly Challenge 227: Roman Maths

These are some answers to the Week 227, Task 2, of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in a few days from now (on July 30, 2023 at 23:59). 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 2: Roman Maths

Write a script to handle a 2-term arithmetic operation expressed in Roman numeral.

Example

Look mom I invented colors

Just released Graphics::Toolkit::Color for the purpose to create computationally harmonic color pallets (2-3 lines max for most needs). It is in fact a chunk out of Chart I needed to reuse in other projects as the Harmonograph. And as you can see in the SEE ALSO section of the POD - I'm aware that there are plenty other modules doing, parts, similar stuff or even more.

Casting Perls before Splines

As I sit pondering my peas at the dinner table, my thoughts are unnaturally drawn to the similarity between these pulses and Perl. A famous poet once said that "For a hungry man, green peas are more shiny than gleaming pearls". From these green orbs on my plate, the mind drifts to a recent virtual conversation regarding logos, branding, rebirth and innovation in Perl. One wonders whether such heated debates are important, relevant and what it might mean for Perl in the future. The Camel (from the O'Reilly Book on Perl) has long been the image associated with the language, along with the Onion (Origin perhaps from Larry Walls' "state of the onion" presentation). Personally it is not something that I feel passionately about. "Perl, with any other logo would be just as quirky" as Will Shakespeare is reported to have said. But The Camel is the popular, recognisable standard "logo" with some, as yet to be tested, copyright and trademark "issues"

London Perl Workshop: Status Update & 2023

Hello all. It's been a while. As you may have guessed there will not be a workshop this year. We spoke about organising one but the uncertainty around restrictions, along with other organisational constraints, resulted in our decision not to.

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.