Perl tutorials and courses
- Perl Tutorial just a plain Perl tutorial. Nothing fancy.
- Beginner Perl Maven video course slidecast of the training material.
- Advanced Perl Maven video course mixed slidecasts, screencasts and plain articles.
- Test Automation using Perl for people who really want to sleep well.
Modern Perl Web Frameworks
- Mojolicious light-weight web framework with rainbows and unicorns.
- Perl Dancer light-weight web framework to rock.
- Catalyst The MVC web framework of Perl.
- PSGI/Plack, the low-level superglue between Perl web application frameworks and web servers.
- CGI, the Common Gateway Interface, for old-school web applications.
Object Oriented Perl
- OOP, the classic way to write Object Oriented Perl code.
- Moo, the Minimalist Object Oriented system for Perl.
- Moose, the 'post modern' Object Oriented system for Perl.
- Perl and MongoDB, the NoSQL database used in Perl programs.
- AnyEvent, asynchronous programming.
- Net::Server the framework to build TCP/IP servers.
- MetaCPAN - articles for CPAN users, CPAN authors, client developers, and MetaCPAN developers.
- Perl Maven TV Show is a collection of interviews with Perl developers.
- SVG - Scalable Vector Graphics
Projects and Collections
- The search.cpan.org cloning project - Implementing a CPAN search engine using Plack/PSGI with MetaCPAN back-end.
- Command line phonebook with MongoDB and Moo
- Indexing e-mails in an mbox
- Counter Examples Various solution on the simple task of building a counter.
- Becoming a co-maintainer of a CPAN module - refactoring a CPAN module
- Perl::Critic lint-like static analyzer for Perl.
- Implementing a Markua Parser in Perl 5
- Angular JS
- Flask, the Python microframework.
- Groovy, the programming language used for Jenkins pipelines.
- Jenkins, the automation server used for Continuous Integration and Continuous Delivery.
Welcome to the second part of how to setup and use TheSchwartz Perl module. In part one of this tutorial, we covered how to setup the required database and write a script to insert a job for queueing. In this continuation, we will finish things up by adding the worker scripts to process the jobs inserted into the database. Finally we will create a service script to daemonize the runner that does the processing. This will give us a complete queueing system we can use and expand on for many different types of tasks.
So far we have only focused on a very limited set of valid Markua tags. As we make progress we'll need to be able to report rows in an input file that we could not recognize. So let's add that error collecting code now. It will make our parsing tighter as it will mean that for every line in the input file we'll have to know exactly what it means.
We can already foresee some trouble with our current examples as we have not handled the empty rows at all.
How to exchange keys with values of a hash without losing any data even if there a are duplicate values in the original hash?