Challenge 1: Write a script to print the date of the last Friday of every month in a given year
First thought was to use a module to look up the day of the week for the last day of each month in the given year, then work backwards (in each month) to get the last Friday. But — well, once the weekday of any day in the year is known, the rest can be calculated directly without a further module look-up.
Actually, no module look-up is really needed at all once the day-of-the-week of any day in any year is known. And since I know that 17th June, 2019, is a Monday, I should be able to derive the solution from first principles, as it were, by counting backwards or forwards as needed. But working out leap years is tricky! So I compromised: one look-up for each given input year.
Perl 5 solution
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 to find and the kinds of people that want to find them. It's also an expected feature of almost anywhere on the web that is more complex than a single page. So shortly after putting together a demo for Perldoc Browser which would become the backend for perldoc.pl, I needed to make it searchable.
Write a script to print the date of last Friday of every month of a given year.
To handle dates, I used Time::Piece, a core module since 5.10. It has no method to get the last Friday of a month directly, so I tried a simple trick: get the first day of the next month, subtract one day, and continue to subtract days until we get a Friday.
Time::Piece does all the date maths in seconds. I also used Time::Seconds to get the constant
ONE_DAY so I didn’t have to count it myself (
60 * 60 * 24, right?)
On behalf of the Dancer Core Team, I would like to announce the release of
Dancer2 0.20800 (the TPCiP release). This version introduces a new keyword,
prepare_app, and features a small handful of bug and documentation fixes.
We have found a growing number of instances where not having the ability
to execute code on application load is a real annoyance. The prepare_app
keyword will allow you to run a block of code when your app is loaded, and
is inspired from Plack's prepare_app method. Thanks, Sawyer, for making this
The full changelog is as follows:
These are some answers to the Week 13 of the Perl Weekly Challenge organized by Mohammad S. Anwar.
Spoiler Alert: This weekly challenge deadline is due in several days from now (June 23, 2019). This blog post offers some solutions to this challenge, please don't read on if you intend to complete the challenge on your own.
Challenge # 1: Thank God, It's Friday
Write a script to print the date of last Friday of every month of a given year. For example, if the given year is 2019 then it should print the following:
Sigh. It's always the way, isn't it?
You no sooner get done writing about how having the right tools can make a particular coding task trivially easy...when you realize that, right next door, there was a much better example you could have used to make exactly the same point.
The "longest initial subpath" example I talked about in my previous post was challenge #2 of last week's Perl Weekly Challenge. But challenge #1 that week makes it even clearer how much the right tool can simplify a task.
Challenge #1 was to find the smallest Euclid number that isn't a prime. The Nth Euclid number is given by the product of the first N primes, plus one. So the sequence of Euclid numbers is:
(2)+1, (2*3)+1, (2*3*5)+1, (2*3*5*7)+1, (2*3*5*7*11)+1, ...
In November 2015 I started my App::Spec
commandline framework and wrote this
It's not only a framework for perl. It can also generate shell tab completion
for other tools.
Since then I have been busy with other things, but recently continued working
on it for several reasons, and fixed several bugs, mostly for bash.
Last year I started a collection of generated completion scripts for bash and
Today it contains completions for 20 tools, mostly for perl commands. If you
miss a tool there, let me know, or try to write your own YAML specification
and generate the completion.
Below you will see some examples.
How to display NA in CPAN Testers?
I asked qustion "I want to display NA instead of UNKKONW in CPAN Testers"
I get some answers.
Thank you for everone!
I write a example to to display NA in CPAN Testers.
The Smallest Non-Prime Euclid Number
An Euclid number is a number that equals 1 + product of a sequence of primes.
To speed things up, I used an object that caches the sequence of primes discovered so far. The method
size returns the length of the sequence of primes;
extend_to extends the sequence up to the specified number.
A few years ago, I created a talk (and later an entire class) about "transparadigm programming" in Perl 6.
The basic premise was that while some languages restrict you to only a single hammer (or worse: a box full of hammers), Perl 6 was designed to be a complete toolkit: integrating OO, functional, concurrent, declarative, and procedural tools to allow you to choose exactly the right combination for each job.
That idea came back to me in full force recently. In last week's Perl Weekly Challenge, the second task was to take a list of file paths and find the longest common initial subpath (i.e. the deepest directory they all share).
The solutions offered by the various registered participants were all very clean, and often both efficient and elegant. Yet most of them were variations on the same procedural solution: Split each path on the directory separator, then for 1-to-N: compare all the Nth components and quit if they're not identical. Something like:
These are some answers to the Week 12 of the Perl Weekly Challenge organized by Mohammad S. Anwar.
Spoiler Alert: This weekly challenge deadline is due in several days from now (June 16, 2019). This blog post offers some solutions to this challenge, please don't read on if you intend to complete the challenge on your own.
Challenge # 1: Euclid's Numbers
The numbers formed by adding one to the products of the smallest primes are called the Euclid Numbers (see wiki). Write a script that finds the smallest Euclid Number that is not prime. This challenge was proposed by Laurent Rosenfeld.
I did not even remember I proposed this challenge to my friend Mohammad Anwar.
Can meta cpan display html table.
metaCPAN support img tag.
If I use HTML table in pod,
If you know, tell me the answer.
You might find my Roles and Responsibilities in Scrum of interest (Scrum is not Waterfall).
RPerl is back on the road! We were in Dallas for the 2019 Texas Linux Fest, another wonderful opportunity to show the open source community that Perl is alive and well! One of the participants called our booth “the coolest-looking table of the conference”, and to that I must say: Thank you Wendy for showing me the way! You are my true mentor when it comes to spreading Perl love.
At the booth, we had the help of Tommy Butler, Perl programmer and leader of the Dallas Perl Mongers. On top of having a booth for the event, Will also gave a talk jokingly entitled “Start A Cult: Build A FOSS Community From Scratch”. The talk was well-attended and drew more interest to our overall Perl booth activities.
Hi all, and Happy Shavuoth.
Apparently, perldoc -f vec
writes 16-bit / 32-bit / 64-bit quantities in big endian
byte order, including on little endian architectures such as x86. This may cause issues when writing
XS / etc. bindings.
I ended up using the following approach on x86-64 Linux to overcome that:
A couple of months ago I wrote this blog post Data analysis and visualization in Perl. Then last month I released a 0.0003 version. And today I made a new 0.0005 release to CPAN. Some of the notable improvements in the recent releases are,
There is a new blog post on my Ocean of Awareness blog:
"Infinite Lookahead and Ruby Slippers"
. It is a relatively simple example that packs in a lot about the various parsing strategies available in Marpa. The context is comment conventions in the Hoon language.
It was the month of Ramadan (Fasting) for us. As always, I was low in energy through out the month. Having said that "Perl Weekly Challenge" kept me going. However there was one low point when my daily CPAN game got discontinued after 621 days of daily CPAN upload. This time, it wasn't my fault. PAUSE site was down for some maintenance work. By the time it came back, it was too late. I really had to motivate myself hard to start again. I must say it wasn't easy to convince myself to start the journey again. I would like to thank everyone for the moral support. As of today, I have done 27 days of daily CPAN upload. With all these happenings, my other pet project "London Hack Day" is being delayed further.
Let's take a quick look through last month main activities.
- Pull Request
- Git Commits
- Perl Weekly Challenge
- Pull Request Club
- Perl Blog
- PerlWeekly Newsletter
- Adopt CPAN Module
It has been about 25 years since the release of 5.000 (1994), we (The Perl Shop) are thinking about creating an infographic for the Perl 5.30.0 release. This infographic would be an advocacy item aimed at casual Perl users and people outside the community, rather than day-to-day users who would largely be familiar with Perl trivia.
The idea would be to highlight not just some of the stats from that specific release, but to draw attention to the history of 5.x releases by showing how many releases there have been, their frequency, the odd/even dev/prod pattern, and generally that Perl is still being regularly updated with new capabilities, despite the constant 5.x release number.
It might also be good to include a timeline showing notable 5.x releases, indicating when they happened and why they were notable.
What would you include? Post your suggestions below, and cite references, if possible.
Which 5.x releases do you consider notable, and why?
Some known reference material
perlhist is a good source for the date of releases, and it seems to indicate the odd/even scheme was introduced in 2000 with 5.6.
Over in a LinkedIn version of this post, Dave Cross suggested some of his slide decks:
Modern Core Perl
Modern Perl Catch-Up