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!

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.

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...

Perl 5 Porters Mailing List Summary: November 10th-15th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week. Enjoy!

CMS based Mojolicious

Recently I published an initial release of CMS for a blog creation based on Mojolicious - http://mojoblog.net/en/

I want to ease the installation of this product by users who are not perl programmers. It makes sense to pack all Perl modules, including all dependencies, in the CMS distributive (in the 'lib' directory) to do this. I would like to ask the experienced Perl programmers how risky is this strategy?

Is it possible and which way is the best to do it?

I found the technology for identification of all dependencies for Perl modules here -
http://perlmaven.com/how-to-fetch-the-cpan-dependency-tree-of-a-perl-module

Formal deprecation of GraphViz V 2.19 - Use GraphViz2

With the help of a pull request from Patrice Clement (as part of the CPAN Request Challenge) I've released GraphViz V 2.19.

What should Rakudo-js aim for first?

I'm considering applying for a TPF grant to allow me to fully focus on working on getting Rakudo to target JS. To focus the grant application (and pin down the deliverables) I need to choose a use case for rakudo-js to focus on. Possible ones (ideas for new ones are appreciated).
  • running a single page app in a browser (using react.js/jquery or just vanilla js).
  • running on top of node.js
  • running on top of react.native on a mobile phone
  • exploring Perl 6 in your browser (having a awesome REPL, being able to execute snippets etc.)

is firewall of server blocking my script ... ?!

hello and this is one of my first scripts, which are not executable at present.
one year ago, there was no problem to use this script as shell-script (not yet in perl) like here :

#!/bin/bash
awk '{
for (i = 1; i <= NF; i++)
if ($i ~ /^SRC=/)
print substr($i, 5)
}' /var/log/syslog | sort -u | while read ip;
do
printf ' INVALID STATE ' && printf ' === %s ===\n' "$ip"
whois "$ip" >> log-002.txt;
done

I have used this script to filter syslog output after connections who are knocking on
the phone-lines ...

Now this script seems always to be stopped by the firewall of my provider. One year ago or 6 months ago this script was not stopped by third person (or program).

the output of today is the same like as one week ago:

INVALID STATE === fe80:0000:0000:0000:0a95:2aff:fe7a:bca7 ===

Is this the firewall of the provider stopping my script ?!

Another awesome Sydney-PM

Thanks to the 14 people who attended and our three speakers, John, Peter and Mandy. Hopefully their slide decks will be available shortly.

In the "Good news everyone!" category, there are a couple of Perl shops in Sydney who are hiring right now (afaik, local not remote workers). People should feel free to ask after them via the Sydney.PM on Facebook page or the Email list

By popular demand, we will be convening again in December - speakers and a venue are all up for grabs. Use the above two links to volunteer.

Perl 5 Porters Mailing List Summary: November 2nd-9th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week, including Monday the 9th. Enjoy!

DC-Baltimore Perl Workshop 2016!!! Call for Speakers

It's that time again folks! Time to start planning for the DC-Baltimore Perl Workshop. I'm pretty sure we are now on year 5, and psyched to see everyone, old and new.

On behalf of myself and all of the workshop organizers, you are cordially invited to submit talks for the 2016 DC-Baltimore Perl Workshop, which will be held on Saturday, April 16, 2016, in Baltimore, MD!

Submit via the Google Form (a new experiment this year).

As in previous years, by default talks are 25 minutes, which we've found is a sweet spot for most topics. We get a great variety -- enough to get a dose of newness and not overwhelm. We also welcome proposals for more tutorial-style talks of around 50 minutes. We'll take the talks and build out a two-track schedule.

Released Mojolicious::Plugin::AutoRoute 0.18 - Improve performance

I release Mojolicious::Plugin::AutoRoute. This is plugin which create route automatically. You can create web application with only writing template. It is understandable if you think This is plugin which embbed PHP featre to Mojolicious.

Mojolicious::Plugin::AutoRoute

In 0.18 release, Performance is improved.

Sydney PM November - Tomorrow!

It's Tomorrow!


Date: Tuesday, 10th November 2015
Time: 6-9pm
Place: Broadbean, Suite 8.03, 9 Hunter Street Sydney

Best train station: Probably Townhall?

Lighting Talks:

John Horner, "extracting poetry from the Twitter firehose".

Speakers:

Peter Harrison, who is also our host!

An as yet to be determined volunteer - could this be you?


Please join and share on Facebook.

Naturally you can tell your friends and colleagues the old fashion way too.

Dean

Outthentic latest releases

Hi! I am very glad to announce of outthentic stuff latest releases:

  • Outthentic::DSL - a core component for all outthentic test clients
  • Outthentic client - a general purposes test tool ( based on Outthentic::DSL )
  • Swat client - a web application test tool ( based on Outthentic::DSL )

So. Follow metacpan/github docs, find your proper tool and enjoy your testing with Outthentic!

My First Perl 6 Module: Net::SSH

I've written my first Perl 6 module! I wanted to start contributing modules, but it took a while to find one that wasn't already done, but was simple enough to tackle as my first one. I also wanted to make a proper distribution for it, which was something I hadn't done before even in Perl 5, so it took a while to get everything in order. I'm sure there are still mistakes, but I'm still working on it, and it should go much better on future modules.

The distribution is at my GitLab repository. So far, it's just a simple wrapper around the 'ssh' command-line tool, which runs a command on a remote server and returns the output as an array of lines. I borrowed some of the code from the Perl 5 module Net::SSH, and Perl 6-ified it. It's not ready for panda or anything, but I hope to get it there once I make it more capable and add more error-checking and testing. A few observations:

GitPrep 1.11 released - Support git 2, and add image support for markdown.

I released GitPrep 1.11. You can install portable GitHub system into Unix / Linux easily. It is second major release.

Because you can install GitPrep into your own server, you can create users and repositories without limit. You can use GitPrep freely because GitPrep is free software. You can also install GitPrep into shared rental server.

GitPrep (Document and Repository)

Features added in 1.11 are:

  • Support git 2
  • - Add image support for markdown. you can specify images in the repository by relative pass,For example, ![Image Name](images/a.png)

Enjoy!

Example

You can try GitPrep example.

GitPrep Example

Download

Download

Document

GitPrep Document and Repositry

Exact Perl location with B::DeparseTree (and Devel::Callsite)

Recently I have been working on this cool idea: using B::Deparse to help me figure out exactly where a program is stopped. This can be used in a backtrace such as when a program crashes from Carp::Confess or in a debugger like Devel::Trepan.

To motivate the idea a little bit, suppose my program has either of these lines:

$x = $a/$b + $c/$d;
($y, $z) = ($e/$f, $g/$h);

I might want to know which division in the line is giving me an illegal division by zero.

Or suppose you see are stopped in a Perl statement like this:

my @x = grep {$_ =~ /^M/} @list;

where exactly are you stopped? And would the places you are stopped at be different if this were written:

my @x = grep /^M/, @list;

? (The answer is yes.)

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.