Perl Weekly Challenge, First Week

I am glad that Mohammad Anwar started the Perl Weekly Challenge. Since it seems that the entries will not be published by Mohammad, this gives me the opportunity to finally publish my first post here, about 8 months after having registered.

Week 1, Challenge # 1: Letter Substitutions

Substitute every ‘e’ with upper-case 'E' in the string “Perl Weekly Challenge” and count every occurrence of ‘e’.

For this challenge, I proposed only a Perl 5 solution, in the form of a Perl one-liner:

$ perl -E 'my $c = shift; my $num = $c =~ tr/e/E/; say $c; say "Number of replacements: $num";'  'Perl 6 Weekly Challenge'
PErl 6 WEEkly ChallEngE
Number of replacements: 5

Nothing special about it, except that the tr/// operator returns the number of substitutions it has performed, so there is no need to count separately the 'e'.

Thruk 2.28 released

Details available on http://thruk.org/whatsnew/v2.28.html ... and http://thruk.org/changelog.html

Thruk is a multibackend monitoring webinterface which currently supports Naemon, Nagios, Icinga and Shinken as backend using the Livestatus API. It is designed to be a 'dropin' replacement (for Nagios web UI etc) and covers almost 100% of the original features plus adds additional enhancements for large installations and increased usability. Written in perl.

(I am not a project contributor, just a fan who uses it and has "upgraded" several $clients from Nagios to Thruk+Naemon)

Monthly Report - March

"Sherlock Holmes & the Case of the Missing Parsing Solution"

There is a new blog post at my Ocean of Awareness blog: "Sherlock Holmes and the Case of the Missing Parsing Solution" .

How to serve Static HTML file and CGI script in development environment

How to serve Static HTML file and CGI script in development environment.

I write simple implementation with Mojolicious.

morbo serve_cgi.pl

Austin Perl Mongers Hackathon Planning - Part 1

Exciting news from Austin, TX!

The Austin Perl Mongers are launching our very first full Hackathon. It is scheduled for late April, on two weekends, Saturday 20th and 27th. Our goal is to create a Perl class for teenagers. We will achieve this at the Hackathon by upgrading the CloudForFree platform, adding graphics, and a live development feature. The students will be able to see the result of their coding, as they write their code! It can make the learning of programming more accessible to teenagers, and it introduces them to Perl.

The project managers for this Hackathon are yours truly and Bonnie Cope, a programmer and Perl enthusiast. Will 'the Chill' Braswell, creator of the platform, is one of the programming team leads.

You can check out the CloudForFree platform on http://cloudforfree.org

20190328-austin_perl_mongers_christmas_party_big_bennie_bonnie.jpg

Enforcing Simple Standards with One Module

It's fair to say that at our consulting company, we work with many clients who use Perl heavily. The "preamble" of their Perl code is either an ad-hoc mixture of features, or stock boilerplate like this which gets cut-n-pasted all over the place:

use strict;
use warnings;
use v5.24;
use feature "signatures";
no warnings 'experimental::signatures';
use utf8::all;
use Carp;

Both of those approaches are dead wrong. The "ad hoc" pragma list means it's hard to be sure what features are or are not available. The "standard boilerplate" approach means cutting-n-pasting and then hating yourself when you have to change that standard boilerplate.

What to do with doubly-broken UTF-8?

I recently got a few test reports like this:

www.cpantesters.org/cpan/report/49de90f8-4ec9-11e9-98fa-fc611f24ea8f

Although I've put all kinds of stuff in my test file:

[https://metacpan.org/source/BKB/Lingua-JA-Moji-0.56/t/katakana2syllable.t#L9-13]( https://metacpan.org/source/BKB/Lingua-JA-Moji-0.56/t/katakana2syllable.t#L9-13)

the cpan testers doesn't like that. How to deal with this garbage characters?

The solution is this:

Announcing the Perl Toolchain Summit 2019

This year's Perl Toolchain Summit (PTS) is being held in the UK, in the historic town of Marlow, which is about 30 miles west of London.

In this post we'll give an overview of the PTS and who attends, the venue, and the plans for this year. All of the attendees are volunteers, who mostly work on the CPAN ecosystem in their spare time, so the event is supported by sponsorship. If your company uses Perl, maybe you could support the PTS?


Data analysis and visualization in Perl

position_stack_02_02.png

Hello everybody, this is my first post here, so forgive me if I screw it up.

Let me firstly introduce background of my work. Several years ago I landed onto a Perl job. It also involves some other languages like Python and R, but it was mainly Perl, until last year focus of my role switched and I still do some Perl but much less since then. I was a little bit sad. Perl is indeed a good language, but usually underated outside its community. I am quite good at several programming languages, but with Perl I feel most comfortable and productive. So I thought I might write something at my after-work time, to use my Perl knowledge to create something to give back to the Perl community.

Native Variable-Length Lookbehind

No, I'm not talking about Dr. Regex' emulated variable-length lookbehinds, which frankly make my head hurt. Beginning with Perl 5.29.9, Perl has honest-to-heaven, really truly variable-length lookbehinds.

Now, there is at least one restriction. No lookbehind assertion can be more than 255 characters long. This limit has been around, as nearly as I can tell, ever since lookaround assertions were introduced in 5.005. But it has been lightly documented until now. This restriction means you can not use quantifiers * or +. But bracketed quantifiers are OK, as is ?.

As Perl tracks Unicode's case-folding rules, variable-length lookbehinds are becoming increasingly hard to avoid, and can crop up in inobvious places. Witness Perl Porters thread 245323 and its associated RT ticket.

What happened here is that Unicode decided that (e.g.) /ss/i should match the German sharp s. This is not the only example -- ligatures are treated the same way. So a regular expression with no quantifiers at all suddenly becomes variable-length simply by making it case-blind. Discussion in the RT ticket seemed to be leaning toward special-casing the problem characters, but it was the general case that got released.

So now you can match things like /(?<=fo{2,20})bar/. It's still marked experimental, though.

LPW 2018 Videos and EPO Conference Video Initiative

The London Perl Workshop 2018 videos are now available to view on YouTube: Playlist. It's taken us a bit of time to put these together due to last minute equipment issues, which led to more post processing / editing than anticipated.

The videos were recorded using the equipment purchased for LPW 2017, which has since been expanded by The Enlightened Perl Organisation (EPO). We want this equipment to be available to other workshops/conferences/tech meets, to allow high quality recordings at very low cost, so have added the details to the EPO Conference Video repository on github for view/contribution.

As always, thanks to our sponsors who made LPW 2018 possible:

- Eligo
- Perl Careers
- CV Library
- Adestra
- Broadbean
- Oleeo
- OpusVL
- The Perl 6 Community
- Adzuna
- Geekuni

Perl Weekly Challenge - FAQ

Here I compiled the questions that have been asked by people on Twitter and by email. If I missed anything then please correct me. I will put this FAQ on the official online portal with the launch.

Q) When is the launch date for the "Perl Weekly Challenge"?
A) It is going public with the first challenge on 25th March 2019.

Q) How can I join the "Perl Weekly Challenge"?
A) You just send one line email to perlweeklychallenge@yahoo.com. However we would like you to tell us about yourself in couple of lines e.g. your preferred choice of language, how long you have been using the language, your city and country. If you could send us your recent photo then that would be great to show on the team page but not required.

Q) When do you send the challenge?
A) The plan is to send weekly challenge to all subscribed team members every Monday.

Module::Lazy - postpone module loading until actually used

This module is designed to improve load times for applications with huge dependency footprint. It is somewhat similar to autouse, but more focused on object-oriented modules. See:

use Module::Lazy 'My::Module';

This creates a fake package My::Module with AUTOLOAD, DESTROY, can, and isa redefined.

my $object = My::Module->new;
my $value = My::Module::some_function();

Either of these triggers loading My::Module in full.

no Module::Lazy;

Preload all lazy methods right away, forbid further lazy-loading. This may be useful for long-running, mission-critical apps.

use Module::Lazy;
Module::Lazu->unimport();

Ditto, but at runtime (say after parsing command-line parameters and before daemonizing).

Sure, there are some caveats with using it, but maybe it's still helpful for your project. We managed to reduce test suite execution time from ~17 to ~9 minutes with this one.

We start Mojolicious 8.12 Japanese translation

I found a friend who helped me with the translation of Mojolicious.

We start to translate Mojolicious 8.12 to Japanese.

Mojolicious Japanese Translation

This translation have helped Japanese Mojolicious users.

"I always see this translation when I have trouble in Mojolicious"

Impressions from the German Perl Workshop 2019

Another edition of the German Perl Workshop took place in Munich from 6th to 8th March 2019. I very much enjoyed taking part. Let me share some personal remarks.

Things I learned

My Twin Projects


Last week, 2 projects kept me busy, one is "Perl Weekly Challenge" and the other is "London Hack Day".

Perl Weekly Challenge

I have created dedicated email account for the group i.e. perlweeklychallenge@yahoo.com so that I no longer have to use my personal email. Second I created a twitter account to spread the word about the forthcoming challenges i.e. @PerlWChallenge. If you are active on Twitter, I request you to please follow the twitter account and spread the word. I have started working on dedicated web portal and registered a domain as well. I am using Hugo to generate the contents. With the help of GitHub pages, we are planning to go public on 25th March 2019 with the first challenge for both Perl5 and Perl6. I have informed the team members about the progress we have made so far. I am hoping more will join after the official launch of the event. Fingers Crossed.

London Hack Day

German Perl Workshop 2019 in Munich Report

See here on my blog!

P.S. As http://ironman.enlightenedperl.org/ seems to be down, I'm back to using blogs.perl.org for syndication...

Idea of Raku

Raku is another name of Perl 6.

Use more Raku in more place for people to understand it is another name of Perl 6.

Create raku command which is same as perl6 command.

Create .rk or ra extendion which is same as .pl6 extension.

Create .rm extension which is same as .pm6 extension.

Keep peace, Keep peace, Keep peace. Do not hurt Perl6 commnity.

Release name keeps to be "Raku Perl 6 'Diwali' 6.d" before people understand Raku is a Perl 6 another name.

This release name is not desirable name. This release name is temporary name before people understand Raku is a Perl 6 another name.

Start to write raku example in more place and documentation.

After sevral years, pelope start to understand Raku is a Perl 6 another name.

"Perl 6 is confusion name for outer people of Perl community. Perl 6 is called Raku lately ."

Keep all of perl 6 for member of Perl 6 community. Don't break anything.

Name of Raku is for outer people to distinguish Perl 6 with Perl 5 correctly.

RPerl and the Google Summer of Code

The next Google Summer of Code has been launched, and The Perl Foundation is part of it! Several Perl 5 and Perl 6 projects are available for computer software students to join. Among those, RPerl is present, under the title "Perl 5 RPerl: Built-In Operators". Will the Chill will be the lead mentor for this project. All the details are available here:
perl-gsoc-2019.github.io/ideas/perl5/RPerl_Operators.html

Also, here is The Perl Foundation page on GSoC:
summerofcode.withgoogle.com/organizations/4713351599357952/

The Google Summer of Code is a great opportunity to create more code that will be available to the open-source community. Students have until April 9th to apply.

Good luck to all the Perl projects involved!

wbraswell_20190228-google_summer_of_code_screenshot_cropped.png

PS - We've just launched the official Team RPerl page on Patreon!
Special thanks to our first 5 Patrons: Packy Anderson, Tommy Butler, Harry Braswell, Debbie Sonnycalf, and John Stuke

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.