<?xml version="1.0" encoding="us-ascii"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Perl Tips</title><subtitle>From Perl Training Australia</subtitle><logo>http://perltraining.com.au/images/logo.png</logo><link href="http://perltraining.com.au/tips/"/><id>http://perltraining.com.au/tips/</id><link href="http://perltraining.com.au/tips/index.atom" rel="self"/><author><name>Perl Training Australia</name></author><updated>2014-11-21T00:00:00Z</updated><generator uri="http://search.cpan.org/dist/XML-Atom-SimpleFeed/" version="0.86">XML::Atom::SimpleFeed</generator><entry><title>Managing processes with Ubic</title><link href="http://perltraining.com.au/tips/2014-11-21.html"/><id>http://perltraining.com.au/tips/2014-11-21.html</id><content type="html">
&lt;p&gt;Perl makes it easy to write code that fulfils a variety of roles,
but if you want to write a persistently running process (a daemon)
then things become more complex. How do you make sure you don&#39;t
run multiple daemons at once? How do you manage the output of STDOUT
and STDERR? How can you make sure that a set of related daemons
are all started or stopped at the same time? And how do you arrange
for your process to be restarted if it falls over, or your machine
reboots?&lt;/p&gt;
&lt;p&gt;The Ubic framework allows one to turn &lt;em&gt;any&lt;/em&gt; process or segment
of Perl code into a fully-managed daemon, without having to modify
your code or executable at all! No special privileges are required,
and your executable doesn&#39;t even need to be written in Perl!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href=&#34;http://perltraining.com.au/tips/2014-11-21.html&#34;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;</content><updated>2014-11-21T00:00:00Z</updated></entry><entry><title type="html">
What&#38;#39;s new in 5.18.0?
</title><link href="http://perltraining.com.au/tips/2013-06-04.html"/><id>http://perltraining.com.au/tips/2013-06-04.html</id><content type="html">
&lt;p&gt;Perl 5&#38;#39;s yearly release rhythm is well established. Because major releases come out every single year, a major release no longer introduces a slew of new features. Instead, it consists of a smaller set of features and bug fixes. Upgrading to a new major version is easier than it&#38;#39;s ever been.&lt;/p&gt;

&lt;p&gt;On 18th May 2013, Perl 5.18.0 was released.&lt;/p&gt;

&lt;p&gt;What has changed?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href=&#34;http://perltraining.com.au/tips/2013-06-04.html&#34;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;</content><updated>2013-06-04T00:00:00Z</updated></entry><entry><title> Enhancing web applications with Plack </title><link href="http://perltraining.com.au/tips/2012-11-20.html"/><id>http://perltraining.com.au/tips/2012-11-20.html</id><content type="html">&lt;p&gt;A few months ago, we described &lt;a
href=&#34;http://perltraining.com.au/tips/2012-04-27.html&#34;&gt;how to write a twitter clone using
the Dancer framework&lt;/a&gt;.
Today, we&#39;re going to learn how we can use &lt;code&gt;Plack&lt;/code&gt; to enhance
that application, without needing to change the application at all.&lt;/p&gt;
&lt;p&gt;Plack is a set of utilities that work with the 
&lt;em&gt;Perl Server Gateway Interface&lt;/em&gt; (PSGI) specification, which describes how
web servers and applications communicate.  Any application that
adheres to the PSGI specification can be used with Plack.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href=&#34;http://perltraining.com.au/tips/2012-11-20.html&#34;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;</content><updated>2012-11-20T00:00:00Z</updated></entry><entry><title> Working with comma/tab separated data </title><link href="http://perltraining.com.au/tips/2012-11-07.html"/><id>http://perltraining.com.au/tips/2012-11-07.html</id><content type="html">
&lt;p&gt;Sooner or later you&#39;ll be given some data in comma or tab separated data to
read into your program.  It&#39;s tempting to use &lt;code&gt;split&lt;/code&gt; to do the task for
you, and for small, tidy data sets this might be sufficient.  The problem
is that real-world data is rarely small or tidy.&lt;/p&gt;
&lt;h2&gt;Real world data contains commas&lt;/h2&gt;
&lt;p&gt;Consider for a moment, the data shown below:&lt;/p&gt;
&lt;pre &gt;
        Item ID,Arrival Date,Supplier ID,Name,Description,Quantity,QC
        234,2010/03/17,1234,Wudget,Attach your frames to the wall without a problem,5,18
        245,2010/03/17,1234,Widget,For all oven uses,12,12
        267,2010/03/17,1225,Acme Play,Ages 5 and up,310
        890,2010/03/17,2344,&#38;quot;A4 recycled ream, 500 pages&#38;quot;,photo-copier stationary,5,0&lt;/pre&gt;
&lt;p&gt;Hidden down on the last line, we have an embedded comma.  As such we&#39;ve had
to quote that field.&lt;/p&gt;
&lt;p&gt;If we were to use &lt;code&gt;split&lt;/code&gt;, however, it wouldn&#39;t know that that field is
quoted and so we&#39;d end up with 8 fields instead of 7.  Work-arounds aside,
&lt;code&gt;split&lt;/code&gt; rapidly becomes the wrong tool for the job.  Fortunately there are
modules to help solve all the kinds of problems you can hit with CSV and
other *SV files.  We recommend &lt;a
href=&#34;http://search.cpan.org/perldoc?Text::CSV_XS&#34;&gt;Text::CSV_XS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href=&#34;http://perltraining.com.au/tips/2012-11-07.html&#34;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;</content><updated>2012-11-07T00:00:00Z</updated></entry><entry><title> Writing less SQL with SQL::Abstract </title><link href="http://perltraining.com.au/tips/2012-10-02.html"/><id>http://perltraining.com.au/tips/2012-10-02.html</id><content type="html">
&lt;p&gt;If you can&#39;t work with an Object Relational Model (ORM) then you may find
yourself writing SQL directly.  SQL is an expressive and heavily used
language for working with relational databases, however for a software
developer it does present some problems.  Very often we may have
information contained in a data structure that we wish to use as the basis
of a query, but transforming that data into good SQL can be challenging.&lt;/p&gt;
&lt;p&gt;This task is particularly difficult when the data may contain a
variable number of fields and constraints, and the job of managing
the SQL generation is often left to the individual developer.  Hand
generating is not only tedious, it can also be error prone.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href=&#34;http://perltraining.com.au/tips/2012-10-02.html&#34;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;</content><updated>2012-10-02T00:00:00Z</updated></entry></feed>