A Date with CPAN, Part 4: Construction Time Again

[This is a post in my latest, probably long-ass, series.  You may want to begin at the beginning.  I do not promise that the next post in the series will be next week.  Just that I will eventually finish it, someday.  Unless I get hit by a bus.

IMPORTANT NOTE!  When I provide you links to code on GitHub, I’m giving you links to particular commits.  This allows me to show you the code as it was at the time the blog post was written and insures that the code references will make sense in the context of this post.  Just be aware that the latest version of the code may be very different.]

Last time I babbled on for a while about my general plans, and finally came up with a name other than “my perfect date module.” This time we stop screwing around and finally write some code.

I decided to start out with the date class.  In retrospect, I sort of wished I’d started with the datetime class, as that would’ve been a lot simpler.  But the date class was more interesting, and more immediately useful, so that’s where I started, so that’s where we’ll start as well.

OSCON Call for Papers

The OSCON Call for Papers closes this Tuesday, 24th November, at Midnight (US EST) and at this moment there are no papers submitted on Perl.

OSCON has become increasing less language-specific over the years and now doesn’t have language tracks or rooms, however Perl has a long association with this conference including the fact that it evolved from the original Perl Conference and for many years hosted the State of the Onion.

As we approach 2016 with a major new version of Perl in the shape of Perl6 and an ever-vibrant and yearly releases of Perl5 the idea of not having a presence at OSCON is quite strange.

So I am asking all of you to consider if you can submit a talk to this event. We have a very good chance of getting a main room spot if we talk about Perl6 especially since O’Reilly have been pushing known Perl authors on the idea of a Perl6 book. This could be a turning point where we get new Perl5 books as well.

Perl Regular Expression Awesomeness

This week at work I overheard some coworkers talking about a programming problem. The type that you might get in an interview. The idea was that if you had a string of words smushed together without spaces, how would you go about parsing the string into words again?

I thought about it for a bit and pretty quickly decided to load all of /usr/share/dict/words into some kind of regexp. The main difficultly is that you can't just be greedy or be nongreedy because either could fail. Imagine the inputs:

yougotmail          => you got mail
yougotmailed        => you got mailed
yougotmailman       => you got mailman (or: you got mail man)
yougotmailmanners   => you got mail manners

As you can see, regardless of greedy or nongreedy, you need backtracking. Hmm. Regular expressions have backtracking. Problem solved!

$list = join '|', map {chomp, $_} `cat /usr/share/dict/words`;
$input =~ /^($list)*$/;

Improved Syntax Highlighting in the Debugger

You may recall me writing about DB::Color a few years ago. That module let you do this with the debugger:

Perl Debugger with Syntax Highlighting

It has some issues, including the fact that syntax highlighting Perl code is, um, not always perfect, but it does the job. The main drawback, however, is that it runs about as fast as a sloth with a spinal injury. It was so bad that even I stopped using it, and I love the damned thing. Today, I may have fixed that.

New artice: Understanding Marpa-style action subs parameters

Click me!

Bootstraping test infrastructure for mojo application using swat

Install swat mojo command

You need a swat mojo command to generate swat tests scaffolding for mojo application.

cpanm Mojolicious::Command::swat

Bootstrap mojo application

Then you need to bootstrap mojo application or choose existed one.

mkdir myapp
cd myapp
mojo generate lite_app myapp.pl

Define http resources ( mojo routes )

As well as define your routes.

$ nano myapp.pl

#!/usr/bin/env perl
use Mojolicious::Lite;

get '/' => sub {
  my $c = shift;
  $c->render(text => 'ROOT');

post '/hello' => sub {
  my $c = shift;
  $c->render(text => 'HELLO');

get '/hello/world' => sub {
  my $c = shift;
  $c->render(text => 'HELLO WORLD');


$ ./myapp.pl routes
/             GET
/hello        POST  hello
/hello/world  GET   helloworld

Bootstrap swat tests

And then create a swat tests for every route exists.

$ ./myapp.pl swat
generate swat route for / ...
generate swat data for GET / ...
generate swat route for /hello ...
generate swat data for POST /hello ...
generate swat route for /hello/world ...
generate swat data for GET /hello/world ...

Specify additional swat check lists

In “Cede Your Soul”, an episode of a tv show called “Blindspot”...

In “Cede Your Soul”, an episode of a tv show called “Blindspot” one hacker disses another hacker for using Perl instead of Python. You can see it around the 18:20 mark. 

The diss is that you can develop code faster in Python than Perl. The two languages are pretty similar in terseness. And any hacker worth their salt is going to build libraries in their language of choice. So would language even matter at that point? I think not, but what do you think? When seconds matter, what language would you reach for?

[From my blog.]

One more month in the 2015 CPAN PR Challenge

So far 487 people have signed up for the 2015 CPAN Pull Request Challenge. Each month participants (who have just joined or completed the previous month) get a semi-randomly assigned distribution, and have one month to submit a pull request.

A lot of those 487 never did a PR, or did one and then dropped out. But plenty have stuck with it, and 56 perl hackers have had a November assignment so far. There are stragglers spread through the year as well, determined to submit a damn PR for the distribution they were assigned.

We're hoping to end on a bang: so far more than 30 past participants (who had submitted at least one PR) have rejoined just for December. Back in January I told RJBS that I hoped 100 people would do a PR in December. He said that'll never happen. Help me prove him wrong!

It's not too late to join, and just do one last PR in December: send email to me (neil at bowers dot com) with your github username and your PAUSE id if you have one. I'm giving a talk on the PRC at the London Perl Workshop, and it would be great if we could pass 500 sign-ups by then...

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is hosted by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.