<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.illusori.co.uk/xsl/rss.xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Sam's Blog &gt; Perl</title>
    <link>http://www.illusori.co.uk/blog/categories/perl/</link>
    <description>Sam's Blog, feed for category perl</description>
    <language>en-gb</language>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <pubDate>Thu, 03 Jan 2013 14:49:00 GMT</pubDate>
    <lastBuildDate>Thu, 03 Jan 2013 14:49:00 GMT</lastBuildDate>
    <generator>build_site 1.0</generator>
    <webMaster>rss@illusori.co.uk</webMaster>

    <item>
      <title><![CDATA[Setting your repository in META.yml with Module::Build]]></title>
      <link>http://www.illusori.co.uk/blog/2013/01/03/setting-repository-with-module-build.html</link>
      <description><![CDATA[<p>I&#39;ve apparently had this blog sat in my out-bound queue since September
2010 and completely forgot to publish it.
Meanwhile over on <a href="http://perl5maven.com/">Perl 5 Maven</a>, Gabor Szabo
has raised the subject with his <a href="http://perl5maven.com/how-to-add-link-to-version-control-system-of-a-cpan-distributions">&quot;How to convince Meta CPAN to show a link to
the version control system of a distribution?&quot;</a> article.</p>
<p><b>Edit: turns out I&#39;d left it unpublished for a reason, the sample code
was actually broken. Just go and read Gabor&#39;s article instead - and thank
him for testing my broken code!
I&#39;ve removed the broken code from the article below.</b></p>
<p>Whilst I was making some changes to <a href="http://search.cpan.org/perldoc?Template::Sandbox">Template::Sandbox</a>
and <a href="http://search.cpan.org/perldoc?Template::Benchmark">Template::Benchmark</a> as part of my move to using
<code>git</code> and <a href="http://github.com/">GitHub</a>, I noticed
that there wasn&#39;t any documentation on how to set your source code
respository for the META.yml when using <a href="http://search.cpan.org/perldoc?Module::Build">Module::Build</a>.</p>
<p>I thought a quick how-to would be handy.</p><p><a href="http://www.illusori.co.uk/blog/2013/01/03/setting-repository-with-module-build.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>module-authoring</category>
      <category>module-build</category>
      <pubDate>Thu, 03 Jan 2013 14:49:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2013/01/03/setting-repository-with-module-build.html</guid>
    </item>
    <item>
      <title><![CDATA[Perlbrew support in Emacs Flymake]]></title>
      <link>http://www.illusori.co.uk/blog/2011/10/10/perbrew-support-in-emacs-flymake.html</link>
      <description><![CDATA[<p>Good news for fans of <a href="http://search.cpan.org/perldoc?App::perlbrew">App::perlbrew</a> and
Emacs Flymake: I&#39;ve updated
<a href="https://github.com/illusori/emacs-flymake">my fork of Flymake</a>
to include automatic support for perlbrew.</p>
<p>If you do a <code>perlbrew switch</code> in one window, the next run of
Flymake in a Perl buffer will automatically update your <code>$PATH</code>
in Emacs with the changes Perlbrew made.</p>
<p><a href="https://github.com/illusori/emacs-flymake-perlcritic">Emacs-flymake-perlcritic</a>
overrides the code that was changed, but has also been updated to take advantage of
the Perlbrew $PATH sync if it&#39;s available. This means that if you&#39;re using both
you&#39;ll need to update both to see the changes.</p>
<p>If you&#39;re wondering what either of these are, the article
<a href="/blog/2011/07/25/perl_php_static_analysis_with_emacs_flymake.html">&quot;Perl and PHP continuous static analysis with Emacs Flymake&quot;</a> may help explain.</p><p><a href="http://www.illusori.co.uk/blog/2011/10/10/perbrew-support-in-emacs-flymake.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>perlbrew</category>
      <category>emacs</category>
      <category>flymake</category>
      <category>perl-critic</category>
      <category>emacs-flymake</category>
      <category>emacs-flymake-perlcritic</category>
      <pubDate>Mon, 10 Oct 2011 04:00:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2011/10/10/perbrew-support-in-emacs-flymake.html</guid>
    </item>
    <item>
      <title><![CDATA[App::podweaver 1.00 (belatedly) released]]></title>
      <link>http://www.illusori.co.uk/blog/2011/10/09/App-podweaver-1.00-belatedly-released.html</link>
      <description><![CDATA[<p>Yanick Champoux has posted the first of what promises to be an
interesting series of blogs:
<a href="http://babyl.dyndns.org/techblog/entry/taming-pod-weaver">Taming Pod::Weaver</a>.</p>
<p>In it he mentions <a href="http://search.cpan.org/perldoc?App::podweaver">App::podweaver</a>, which reminded me -
a year after the fact - that I hadn&#39;t released a stable release yet.</p>
<p>So I have. Should be hitting a CPAN mirror near you soon.</p>
<p>Biggest change is that it should now respect perlbrew installs.</p><p><a href="http://www.illusori.co.uk/blog/2011/10/09/App-podweaver-1.00-belatedly-released.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>pod-weaver</category>
      <category>app-podweaver</category>
      <pubDate>Sun, 09 Oct 2011 21:59:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2011/10/09/App-podweaver-1.00-belatedly-released.html</guid>
    </item>
    <item>
      <title><![CDATA[Perl and PHP continuous static analysis with Emacs Flymake]]></title>
      <link>http://www.illusori.co.uk/blog/2011/07/25/perl_php_static_analysis_with_emacs_flymake.html</link>
      <description><![CDATA[<p>I followed with interest the discussion and excitement last month
in a few Perl blogs about people discovering
<a href="http://flymake.sourceforge.net/">Emacs Flymake</a>.</p>
<p>Being a long-time Emacs user this seemed really interesting to me, but
I don&#39;t tend to waste a huge amount of time making outright syntax errors.</p>
<p>What I really wanted was something like the static analysis that
a modern IDE does for you while you type.</p>
<p>So I hooked up <a href="http://search.cpan.org/perldoc?Perl::Critic">Perl::Critic</a> and
<a href="http://www.squizlabs.com/php-codesniffer">PHP_CodeSniffer</a>
to Flymake, and here&#39;s how you can too.</p><p><a href="http://www.illusori.co.uk/blog/2011/07/25/perl_php_static_analysis_with_emacs_flymake.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>php</category>
      <category>emacs</category>
      <category>flymake</category>
      <category>static-analysis</category>
      <category>php-codesniffer</category>
      <category>perl-critic</category>
      <category>emacs-flymake</category>
      <category>emacs-flymake-perlcritic</category>
      <category>emacs-flymake-phpcs</category>
      <pubDate>Mon, 25 Jul 2011 09:54:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2011/07/25/perl_php_static_analysis_with_emacs_flymake.html</guid>
    </item>
    <item>
      <title><![CDATA[October 2010 Perl Template Roundup Released]]></title>
      <link>http://www.illusori.co.uk/blog/2010/11/07/october_perl_template_roundup.html</link>
      <description><![CDATA[<p>Having been a little busy for the past month and a half, my attempts
to do the next <a href="/projects/Template-Roundup/">Perl Template Roundup</a>
got delayed from September into October, partly by adding a number of
new engine plugins to <a href="http://search.cpan.org/perldoc?Template::Benchmark">Template::Benchmark</a>:</p>
<ul>
<li><p><a href="http://search.cpan.org/perldoc?HTML::Mason">HTML::Mason</a></p></li>
<li><p><a href="http://search.cpan.org/perldoc?HTML::Macro">HTML::Macro</a></p></li>
<li><p><a href="http://search.cpan.org/perldoc?Parse::Template">Parse::Template</a></p></li>
<li><p><a href="http://search.cpan.org/perldoc?Solution">Solution</a></p></li>
<li><p><a href="http://search.cpan.org/perldoc?Text::Clevery">Text::Clevery</a></p></li>
<li><p><a href="http://search.cpan.org/perldoc?Text::Templet">Text::Templet</a></p></li>
</ul>
<p>Support for pure-perl mode <a href="http://search.cpan.org/perldoc?Text::Xslate">Text::Xslate</a> was also added and
two new cache-types for <a href="http://search.cpan.org/perldoc?Template::Sandbox">Template::Sandbox</a>
(<a href="http://search.cpan.org/perldoc?Cache::FastMemoryCache">Cache::FastMemoryCache</a> and <a href="http://search.cpan.org/perldoc?Cache::Ref::FIFO">Cache::Ref::FIFO</a>).</p>
<p>Then I had to sit around and wait for spare CPU time to actually run
the multiple-days of benchmarks, unfortunately this clashed with me
using that computer as I rushed to release stable versions of my
other projects in anticipation of being too busy
<a href="http://sgrahamuk.deviantart.com/">starting my new job</a>.</p>
<p>Once the projects were out the door I could run the benchmarks, which
completed mid-October, just in time for that whole &quot;too busy&quot; thing
to kick in as I tied up loose ends before my start date.</p>
<p>Anyway, it&#39;s now November, and I figured I ought to do something about
these reports... so here you go: 
<a href="/projects/Template-Roundup/201010/">the October 2010 Perl Template
Roundup</a> (belatedly).</p><p><a href="http://www.illusori.co.uk/blog/2010/11/07/october_perl_template_roundup.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>template-roundup</category>
      <category>template-sandbox</category>
      <category>job-hunting</category>
      <pubDate>Sun, 07 Nov 2010 16:10:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/11/07/october_perl_template_roundup.html</guid>
    </item>
    <item>
      <title><![CDATA[Template Roundup September 2010: last chance for requests]]></title>
      <link>http://www.illusori.co.uk/blog/2010/09/13/suggestions_template_roundup_september_2010.html</link>
      <description><![CDATA[<p>In the next few weeks I&#39;ll be starting to gather data for
the September 2010 edition of <a href="/projects/Template-Roundup/">Template
Roundup</a>, and so now is your last chance for any requests or
suggestions to make it into the report.</p>
<p>Take a look at <a href="/projects/Template-Roundup/">the previous reports</a>
or the <a href="http://search.cpan.org/perldoc?Template::Benchmark">list of template engines supported by
Template::Benchmark</a> and let me know if there&#39;s a template engine
you&#39;d particularly want to see benchmarked, or some feature that isn&#39;t covered.</p>
<p>You can either make your suggestion in the comments thread below or contact
me <a href="/contact.html">via the contact page</a>.</p>
<p>I&#39;m quite looking forwards to seeing how well <a href="http://search.cpan.org/perldoc?Text::Xslate">Text::Xslate</a>
does this time around, it was far and away the fastest fully-featured
template engine in a persistent environment last time, but the recent
changelogs suggest some great strides have been made to make it even
faster in the past month.</p><p><a href="http://www.illusori.co.uk/blog/2010/09/13/suggestions_template_roundup_september_2010.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>template-benchmark</category>
      <category>template-roundup</category>
      <pubDate>Mon, 13 Sep 2010 11:42:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/09/13/suggestions_template_roundup_september_2010.html</guid>
    </item>
    <item>
      <title><![CDATA[All my published projects are now on GitHub]]></title>
      <link>http://www.illusori.co.uk/blog/2010/09/09/projects_on_github.html</link>
      <description><![CDATA[<p>Been a busy couple of weeks, but just thought I&#39;d mention in case any
of my previous contributors are interested: all my published projects
are now <a href="http://github.com/illusori">available on GitHub</a>.</p>
<p>Converting from CVS to git was surprisingly painless, although complicated
by the fact that each project repository had a public and private part, since
I manage each project&#39;s section of my website as part of the project, and
I doubt anyone else has much use for the mishmash of templates and config
files I use for that.</p>
<p>It was pretty easy add a regexp to prune out the bits I didn&#39;t want, convert
my unix login to my git user details, and shift everything up a directory
with the following commands:</p>
<div class="code">
<div class="codebody"><pre><div>git cvsimport -v -d /opt/cvs -S &#39;(bin/|site/)&#39; \
  -C git-Text-Matrix Text-Matrix \
  -A ~/git-cvsimport-authorconv.txt
cd git-Text-Matrix
git mv src/* .
rmdir src
git commit -m &#39;Shifted everything up a directory so repository root matches public section of old CVS project.&#39;</div></pre></div>
</div>

<p>I then did the same for the private directories and then placed the newly
created directories back under my old project dir as separate git repositories.</p>
<p>Things seem to test OK, although looks like I&#39;ve been a bit inconsistent
with whether I&#39;ve included generated files like MANIFEST and META.yml from
project to project.
I expect that&#39;ll sort itself out next time I work on any given project.</p>
<p>I really am kicking myself for sticking to CVS so long rather than giving
git a try, if anyone else is lingering: make the effort, it&#39;ll repay itself
within days.</p>
<p>Git honestly makes it <i>effortless</i> to do all those &quot;Best Practice&quot;
things you never quite do with CVS because it&#39;s too much hassle.</p>
<p>GitHub is just icing on the cake.</p><p><a href="http://www.illusori.co.uk/blog/2010/09/09/projects_on_github.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>git</category>
      <category>github</category>
      <pubDate>Thu, 09 Sep 2010 15:32:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/09/09/projects_on_github.html</guid>
    </item>
    <item>
      <title><![CDATA[Custom minting with Module::Starter and Test::XT]]></title>
      <link>http://www.illusori.co.uk/blog/2010/08/26/custom_minting_module_starter_test_xt.html</link>
      <description><![CDATA[<p>In the comments to
<a href="/blog/2010/07/24/to_dist_zilla_or_not_to_dist_zilla.html">a previous article</a>,
I mentioned that I use <a href="http://search.cpan.org/perldoc?Module::Starter">Module::Starter</a> when starting a new
distribution.</p>
<p>I actually use a custom profile along with the very handy <a href="http://search.cpan.org/perldoc?Test::XT">Test::XT</a>
to produce robust release tests that won&#39;t break when people are just trying
to install with the minimum fuss.</p>
<p>I thought it might be useful for other people if I wrote a quick tutorial
on how to achieve the same results themselves.</p><p><a href="http://www.illusori.co.uk/blog/2010/08/26/custom_minting_module_starter_test_xt.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>module-authoring</category>
      <category>tutorial</category>
      <category>intermediate</category>
      <category>module-starter</category>
      <category>test-xt</category>
      <pubDate>Thu, 26 Aug 2010 18:49:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/08/26/custom_minting_module_starter_test_xt.html</guid>
    </item>
    <item>
      <title><![CDATA[App::podweaver and Pod::Weaver::PluginBundle::ReplaceBoilerplate]]></title>
      <link>http://www.illusori.co.uk/blog/2010/08/23/pod_weaver_plugin_replaceboilerplate.html</link>
      <description><![CDATA[<p>As mentioned in my previous article,
<a href="/blog/2010/08/16/still_alive.html">&quot;Still Alive and What I&#39;ve Been Up To&quot;</a>,
I&#39;ve been working on a way to let me use <a href="http://search.cpan.org/perldoc?Pod::Weaver">Pod::Weaver</a>
without being forced down the route of using <a href="http://search.cpan.org/perldoc?Dist::Zilla">Dist::Zilla</a>.</p>
<p>(The reason for not using <a href="http://search.cpan.org/perldoc?Dist::Zilla">Dist::Zilla</a> is that
<a href="/blog/2010/07/24/to_dist_zilla_or_not_to_dist_zilla.html">its work-flow
doesn&#39;t fit mine</a>.)</p>
<p>To that end I&#39;ve developed
<a href="http://github.com/illusori/Perl-App-podweaver">App::podweaver</a>,
<a href="http://github.com/illusori/Perl-Pod-Weaver-Role-SectionReplacer">Pod::Weaver::Role::SectionReplacer</a>, and
<a href="http://github.com/illusori/Perl-Pod-Weaver-PluginBundle-ReplaceBoilerplate">Pod::Weaver::PluginBundle::ReplaceBoilerplate</a>.</p>
<p>All the above are <a href="http://github.com/">GitHub</a> because they&#39;re not
yet ready for <a href="http://search.cpan.org/">CPAN</a> release, since they
lack important things like, oh, <i>tests that they don&#39;t go nuts and delete
all your code</i>.</p>
<p>That said they&#39;re at a stable enough stage that I&#39;ve used them to
weave their own documentation without trouble, and are potentially of
enough use and interest for me to put them up for early adopters to
take a look at, or for people to copy the guts to do their own thing with.</p>
<p>For more details on what does what, carry on reading below the cut.</p><p><a href="http://www.illusori.co.uk/blog/2010/08/23/pod_weaver_plugin_replaceboilerplate.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>git</category>
      <category>pod-weaver</category>
      <pubDate>Mon, 23 Aug 2010 13:16:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/08/23/pod_weaver_plugin_replaceboilerplate.html</guid>
    </item>
    <item>
      <title><![CDATA[Still Alive and What I&#39;ve Been Up To]]></title>
      <link>http://www.illusori.co.uk/blog/2010/08/16/still_alive.html</link>
      <description><![CDATA[<p>I&#39;ve failed <a href="http://ironman.enlightenedperl.org/">the Perl Iron
Man Challenge</a> again, but I&#39;m still alive, just busy.</p>
<p>I&#39;ve had a couple of articles semi-written for the past two weeks,
but they still very much works-in-progress, because they&#39;re about
projects that are still... very much in-progress.</p>
<p>So I thought I&#39;d post an interim report in the style of the &quot;What I&#39;m
Working On&quot; posts that crop up every so often.</p>
<p>One project is getting <a href="http://search.cpan.org/perldoc?Pod::Weaver">Pod::Weaver</a> to do what I want,
as mentioned in my previous article,
<a href="/blog/2010/07/24/to_dist_zilla_or_not_to_dist_zilla.html">&quot;To
Dist::Zilla, or not to Dist::Zilla?&quot;</a>, this has involved using
<a href="http://search.cpan.org/perldoc?Moose">Moose</a> for the first time, <a href="http://search.cpan.org/perldoc?Pod::Weaver">Pod::Weaver</a> for
the first time, <a href="http://search.cpan.org/perldoc?Pod::Elemental">Pod::Elemental</a> for the first time,
<a href="http://search.cpan.org/perldoc?Config::MVP">Config::MVP</a> for the first time, and Git for the first time.</p><p><a href="http://www.illusori.co.uk/blog/2010/08/16/still_alive.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>moose</category>
      <category>git</category>
      <category>pod-weaver</category>
      <category>module-authoring</category>
      <category>strawberry-perl</category>
      <category>perlbrew</category>
      <category>template-benchmark</category>
      <category>job-hunting</category>
      <pubDate>Mon, 16 Aug 2010 11:03:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/08/16/still_alive.html</guid>
    </item>

  </channel>
</rss>
