Taint in Perl

Last night, I finally nailed it with the help of my best friend. "Taint" can no longer scare me.

Last night, I finally nailed it with the help of my best friend. "Taint" can no longer scare me.
These are some answers to the Week 216 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 May 14, 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.
You are given a list of words and a random registration number.
Write a script to find all the words in the given list that has every letter in the given registration number.
Example 1
Input: @words = ('abc', 'abcd', 'bcd'), $reg = 'AB1 2CD'
Output: ('abcd')
The only word that matches every alphabets in the given registration number is 'abcd'.
Example 2
Input: @words = ('job', 'james', 'bjorg'), $reg = '007 JB'
Output: ('job', 'bjorg')
The file access operators are, for the purpose of this blog entry, the file test operators -r, -w, -x, -R, -W, and -X. The upper case operators test the ability of the user's real UID to read, write, or execute the file being tested. The lower case operators do the same for the user's effective UID.
Though Perl provides these, their documentation comes with cautions about their use. The rest of this blog entry represents my thoughts on their use or avoidance.
Although they may be an anthema to many, there are many active Perl communities on Facebook. The primary ones I subscribe to are
Perl Programmers
If you search for Perl groups, you'll find many, many more, including ones for individual Perl Mongers groups.
If someone wants to talk Perl, I don't care where it is - let's talk.
Cross-posted from my own blog: Replay/Debug/Test Cron Events With Cron::Sequencer.
These are some answers to the Week 215 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 May 7, 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.
You are given a list of words (alphabetic characters only) of same size.
Write a script to remove all words not sorted alphabetically and print the number of words in the list that are not alphabetically sorted.
Example 1
Input: @words = ('abc', 'xyz', 'tsu')
Output: 1
The words 'abc' and 'xyz' are sorted and can't be removed.
The word 'tsu' is not sorted and hence can be removed.
Example 2
MooseX::Extended is coming along well and is ready for testing. See Introducing MooseX::Extended for a decent introduction on how to make writing your Moose code safer and easier.
With Perl 5.36.0 just around the corner, we thought that this is a good time to clarify plans for the future of the Perl programming language. We realised that the future was hammered out in a number of steps, across several months. This meant that there hasn't been a single statement we could refer people to. This post is to fill that gap.
One of the steps of debugging Perl can be to find out what is actually in a string. There are a number of more-or-less informative ways to do this, and I thought I would compare them.
For this I used two short strings. The first was just the concatenation of the characters whose ordinals are 24 through 39; that is, 16 ASCII characters straddling the divide between control characters and printable characters. The second was a small variation on the first, made by removing the last character and appending "\N{U+100}" (a.k.a. "\N{LATIN CAPITAL A WITH MACRON}") to force the string's internal representation to be upgraded.
The results given below include the version of the module used, the actual code snippet that generated the output, the output itself, and any comments I thought relevant. All subroutines used to dump strings are exportable except for those called as methods. The sample code makes fully-qualified calls because of duplication of subroutine names between different modules.
These are some answers to the Week 213 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 April 23, 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.
You are given a list of positive integers.
Write a script to sort the all even integers first then all odds in ascending order.
Example 1
Input: @list = (1,2,3,4,5,6)
Output: (2,4,6,1,3,5)
Example 2
Input: @list = (1,2)
Output: (2,1)
Example 3
Input: @list = (1)
Output: (1)
On github, I've released MooseX::Extreme.
It's based on years of experience being the lead designer of the Corinna project and trying to figure out how we can get a version of Moose which is safer and easier to use, including removing a lot of boilerplate. This code:
package My::Class {
use MooseX::Extreme;
... your code here
}
Is sort of the equivalent to:
Hello everybody,
after a long time of waiting it is finally time - we cordially invite you
to the German Perl/Raku Workshop 2023.
Next year's workshop will take place from Monday 28 February to
Wednesday 1. March in the Saalbau Gallus in Frankfurt am Main.
Reminder: Until April 30th you can get your conference ticket for the low price of $275 per person! Register now!
Don't miss out on booking accommodation at the venue as it is certain to sell out.
Please like the Conference on Facebook and follow it on Twitter
These are some answers to the Week 212 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 April 16, 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.
You are given a word having alphabetic characters only, and a list of positive integers of the same length.
Write a script to print the new word generated after jumping forward each letter in the given word by the integer in the list. The given list would have exactly the number as the total alphabets in the given word.
Example 1
In which we pine for The Good Place, while visiting The Bad Place.
I'm going to start this blog by writing a very simple guide on installing Perl using perlbrew.
To install Perl using perlbrew, first visit the website and grab its
curl -L https://install.perlbrew.pl | bash and paste it in your terminal, and wait for it to do its job.
Now you will have to run
perlbrew init to initialize perlbrew.
After that you will probably have to add it to your $PATH environment variable as the installation says after it is done downloading. This can be done with a command like
echo source ~/perl5/perlbrew/etc/bash >> ~/.bashrc or echo source ~/perl5/perlbrew/etc/bash >> ~/.zshrc depending on your shell.
Once installed, you can see a list of different installable Perl versions by issuing the
perlbrew available command.
At $work, one of my colleagues who is not in a developer role has started to get into writing code more and more, and I am mentoring him. He's about to work on a productive ticket with Moose for the first time, so I gave him a little reading list, mostly involving selected parts of the documentation as well as Ricardo Signes' excellent talk Moose is Perl.
But then I thought I must have read lots of great blog posts about Moose on the Perl Advent Calendar over the years. I tried to find a few, but had some trouble identifying them easily. So I wrote a quick scraper. Here are all articles that mention Moose since 2010 (where the format of the website changed). Most of them are about Moose or one of the numerous MooseX modules.
These are some answers to the Week 212 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 April 16, 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.
You are given a word having alphabetic characters only, and a list of positive integers of the same length.
Write a script to print the new word generated after jumping forward each letter in the given word by the integer in the list. The given list would have exactly the number as the total alphabets in the given word.
Example 1
Time::Piece is a date/time module that replaces the built-in functions gmtime() and localtime(). The replaced functions return a Time::Piece object, with accessors for the compontents of the time. Time::Piece also provides formatting, parsing, and arithmetic.
This module has been in core since Perl 5.9.5. I was able to get it to pass tests as far back as 5.8.1, though not 5.8.0 or 5.6.2.
Without this module, you would obtain the current Gregorian year in your local zone like this
my $year = ( localtime() )[5] + 1900;
or maybe
my ( undef, undef, undef, undef, undef, $year ) = localtime(); $year += 1900;
Neither is particularly self-documenting, and the latter is much more verbose than we expect of Perl.
Perl has two operators, cmp and <=>, which are basically never seen outside of sort blocks.
That doesn’t mean you can’t use them elsewhere, though. Certainly sort and these operators were designed to work seamlessly together but there isn’t anything sort-specific about the operators per se, and in some contexts they can be the most appropriate solution.
An example would be some code that used to go (almost exactly) like this:
my ( $maj, $min, $rel ) = split /[.]/, $version;
my $version_ok = $maj > 3 || (
$maj == 3 && ($min > 6 || (
$min == 6 && $rel >= 8
))
);
blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.