<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Principia &#187; PERL</title>
	<atom:link href="http://blog.principia-it.co.uk/category/tools-n-tips/glue-software/perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.principia-it.co.uk</link>
	<description>Power from Simplicity</description>
	<lastBuildDate>Tue, 07 Feb 2012 07:40:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.principia-it.co.uk' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/6f78c9f4917c134dd89eb02c5ec6e5d8?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Principia &#187; PERL</title>
		<link>http://blog.principia-it.co.uk</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.principia-it.co.uk/osd.xml" title="Principia" />
	<atom:link rel='hub' href='http://blog.principia-it.co.uk/?pushpress=hub'/>
		<item>
		<title>Is Perl an essential skill of SCMers</title>
		<link>http://blog.principia-it.co.uk/2010/09/21/is-perl-an-essential-skill-of-scmers/</link>
		<comments>http://blog.principia-it.co.uk/2010/09/21/is-perl-an-essential-skill-of-scmers/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 13:27:37 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Glue Software]]></category>
		<category><![CDATA[PERL]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[Tools &#039;n&#039; Tips]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=616</guid>
		<description><![CDATA[Is being able to use Perl an essential skill for people working at the technical coal face of software configuration management? The obvious, and probably correct, answer is &#8216;probably not essential&#8216; but if you work in software configuration management it is well worth considering. Perl is fairly ubiquitous, there are few platforms that do not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=616&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Is being able to use Perl an essential skill for people working at the technical coal face of software configuration management?</p>
<p>The obvious, and probably correct, answer is &#8216;probably not <em>essential</em>&#8216; but if you work in software configuration management it is well worth considering. </p>
<p>Perl is fairly ubiquitous, there are few platforms that do not have a Perl implementation available and it is a standard part of many Unix distributions. Perl code is (with a little caution needed to avoid explicit platform dependencies) portable too, the Tk packages even provide a reasonably portable GUI system should you need it. Perl is a fairly simple language to learn and has a legacy of library code freely available from <a href="http://www.cpan.org/">CPAN</a> that offers a multitude of useful utilities to the SCM practitioner.</p>
<p>While a similar case can be made for Java or Python, I contend that, excellent skills to have though they may be, both languages place more demands on the casual programmer, requiring more time to learn and more discipline to write code. Perl benefits from a much more relaxed approach to scripting. Being a semi-compiled scripting language it is easy to write quick scripts and easy to develop these in a more-or-less <em>ad hoc</em> way.</p>
<p>It is undoubtedly true that Perl&#8217;s relaxed approach can bite the unwary, and it is very easy to end up with unmaintainable systems if you let them get out of control. But with a little discipline you can, so to speak, have your cake and eat it — benefiting from simple, rapid scripting facilities, leveraging libraries and ease of developing small scripts into greater things.</p>
<p>If you get serious about your Perl then you will need an IDE. I use ActiveState&#8217;s <a href="http://www.activestate.com/komodo-ide/features">Kermodo</a> and it serves well with its integrated code assistance, online help, coverage analysis, and debugger being major benefits. Activstate&#8217;s <a href="http://www.activestate.com/activeperl-pro-studio">Perl developer package</a> also comes with a nice packaging tool that wraps a Perl interpreter with your code to provide a single executable package that does not require Perl to be installed on the user&#8217;s environment. </p>
<p>If your tastes run more to the Eclipse IDE then there&#8217;s an extension for Perl, which also supports the Perl debugger, called <a href="http://www.epic-ide.org/">EPIC</a>. Having used both, I favour the ActiveState environment for all the additional features their package supports, but that&#8217;s a personal choice.</p>
<p>Over the past fifteen years I have found my Perl skills have enabled me to quickly develop and reuse Perl scripts in many different environments, on many different projects, for many different clients. So, for me, Perl has been one of the skills I have been very glad to have in my toolbox.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/tools-n-tips/glue-software/'>Glue Software</a>, <a href='http://blog.principia-it.co.uk/category/tools-n-tips/glue-software/perl/'>PERL</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/tools-n-tips/'>Tools &#039;n&#039; Tips</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/616/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/616/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=616&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/09/21/is-perl-an-essential-skill-of-scmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>Common Interface</title>
		<link>http://blog.principia-it.co.uk/2010/01/31/common-interface/</link>
		<comments>http://blog.principia-it.co.uk/2010/01/31/common-interface/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 21:32:23 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[PERL]]></category>
		<category><![CDATA[SCM Tool]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[crazy ideas]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=528</guid>
		<description><![CDATA[After much deliberation and soul searching I&#8217;ve finally decided it&#8217;s time to address one of my all time bugbears. I am going to develop a set of transferable libraries for analysing and operating a CMS. And because I am most familiar with Perl (and, as explained in my earlier post Glue Software, I find it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=528&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After much deliberation and soul searching I&#8217;ve finally decided it&#8217;s time to address one of my all time bugbears. I am going to develop a set of transferable libraries for analysing and operating a CMS. And because I am most familiar with Perl (and, as explained in my earlier post <a href="http://blog.principia-it.co.uk/2010/01/25/glue-software/">Glue Software</a>, I find it the most useful language for my needs) I shall write them in that language.</p>
<p>As with most people who have worked long enough on the coalface of SCM I have a ragtag collection of routines, scripts and utilities already but now is the time to pull them all together, clean them up, give some thought to a coherent design and build a better mousetrap that I can use whenever I go to a new client.</p>
<p>This is not an effort to develop a be-all-and-end-all CM system, but more a matter of me realising that I develop the same sort of scripts time and again. So I would be better off developing a more robust architecture that will allow me to exploit report generators or integrity checkers written when using one tool when I go to a client who uses another tool but has the same problem to be solved.</p>
<p>A typical example of a script I have written several times is one to check the integrity of a build configuration. Answering questions such as, &#8216;does this build configuration contain all, and only, the completed change requests assigned to this release?&#8217;</p>
<p>It would also be nice to have a tool for federated reporting across tools. Often clients have several version control tools and it would be nice to have one reporting front-end that I could plug into their many VCSs and get information about them all.</p>
<p>There are, of course, many problems to overcome (not least all the different philosophies supported by these tools) but this is not a case of trying to solve all problems in one go, rather the idea is to write a facade that will allow me to access the implementation tools through a common interface. In this way, all I need do for each client is write a new facade that complies with my own interface definitions but interrogates their particular implementation. The hard parts of these scripts, the logic, will remain unchanged and useful in multiple applications, treating the tools as databases.</p>
<p>As with many efforts born of frustration, this one is not completely thought out yet (in fact some of the ideas are positively vague), so expect more to come on this side project&#8230;</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/tools-n-tips/glue-software/perl/'>PERL</a>, <a href='http://blog.principia-it.co.uk/category/development/scm-tool/'>SCM Tool</a> Tagged: <a href='http://blog.principia-it.co.uk/tag/cms/'>CMS</a>, <a href='http://blog.principia-it.co.uk/tag/crazy-ideas/'>crazy ideas</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/528/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=528&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/01/31/common-interface/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>Glue Software</title>
		<link>http://blog.principia-it.co.uk/2010/01/25/glue-software/</link>
		<comments>http://blog.principia-it.co.uk/2010/01/25/glue-software/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 08:00:41 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Glue Software]]></category>
		<category><![CDATA[PERL]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[Tools &#039;n&#039; Tips]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=506</guid>
		<description><![CDATA[As someone who inevitably becomes involved in the technical implementation of configuration management systems (CMS) I am often called upon to create what I choose to call &#8216;glue software&#8217;. Glue software is not a full integration between two products (often there is simply no way to fully integrate products) but rather it is a more [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=506&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As someone who inevitably becomes involved in the technical implementation of configuration management systems (CMS) I am often called upon to create what I choose to call &#8216;glue software&#8217;. Glue software is not a full integration between two products (often there is simply no way to fully integrate products) but rather it is a more <a href="http://en.wikipedia.org/wiki/W._Heath_Robinson">Heath Robinson</a> collection of scripts, triggers and hooks used to provide some connection between applications that support the CMS.</p>
<p>There are a multitude of technologies that can be used to create glue software, including but by means limited to; SQL, various shell scripts, C, C++, C#, Java, PHP, Python, various web technologies (XSLT, ASP etc.) and so on. Over the years I have used all of these and more but by far and away my favourite glue software development language is PERL. And here&#8217;s why&#8230;<span id="more-506"></span></p>
<p>PERL is ubiquitous. There is almost no regular platform on which PERL cannot be run; Windows, *NIX, Mac and Mainframe are all generally covered and therefore most of the platforms one is likely to be using in a modern CMS are covered.</p>
<p>PERL is simple. Well, more accurately, PERL is easy to teach/learn because it is accommodating, typically providing more than one way to express a programming notion. PERL is a fairly forgiving language, but it has to be said that sometimes this flexibility leads to confusing pieces of code. One soon learns to interpret the more idiomatic usage though and the confusion is lifted leaving only the choice of programming approach afforded by PERL&#8217;s flexibility.</p>
<p>PERL has a vast library of freely available libraries. Like many languages that are available  across multiple platforms, PERL has developed a wide following from many disciplines and this has meant the development of a large library of routines to do almost anything you want. Check out <a href="http://cpan.org">CPAN</a> and look through all the modules available there. To paraphrase Apple&#8217;s App. Store tag line, &#8216;there&#8217;s a PERL module for that&#8217;. This facility alone can save hours of tedious programming.</p>
<p>Write it once, use it anywhere. Using a native script language (such as ksh, Bourne shell, or even &#8211; shudder &#8211; BAT) means you are largely tied to one platform. PERL&#8217;s ubiquity, when combined with careful programming, means your carefully crafted and debugged script will work pretty much anywhere.</p>
<p>PERL has  a long and illustrious career as a web programming language. Pre-dating Java, PHP, ASP and others as serious dynamic web technologies<sup><a href="#fn1">1</a></sup> the Apache <span class="code">mod_perl</span> module has allowed PERL code to be embedded in  web pages for many years.</p>
<p>With PERL modules like Tk (or Tkx) you can create graphical user interfaces for your scripts that adapt to the window system on which they are displayed. (The newer Tkx provides a much more raw interface to the underlying TCL/Tk libraries. It also, to my eyes, produces a better UI that matches more closely the host platform. Basically because the TCL/Tk libraries are more up-to-date than the Perl/Tk implementations.)</p>
<p>So, that is in broad strokes my case for PERL. But there&#8217;s more.</p>
<p>Perhaps the best supported PERL package is that provided by ActiveState. Although hardcore PERL mongers may consider this limiting I suggest (especially to new PERL users) using ActiveState&#8217;s installation and limiting yourself to using the packages provided through there PERL Package Manager from their repository.</p>
<p>Although ActiveState provide only a subset of available packages it is a substantial subset and, more importantly, they work across all the platforms supported by the main ActiveState distribution. This in turn means that the write once, use anywhere philosophy is easier to maintain.</p>
<p>Added to this common support facility the ActiveState PERL Developer Kit (PDK) provides a cross platform packaging facility that means applications developed on one platform can be wrapped into executable packages suitable for multiple target environments. So, if you develop your PERL on Mac OS X you can provide packages targeted for Windows, Solaris, Linux and AIX platforms without ever leaving your OS X environment. And that has to be a good thing.</p>
<p>As if this were not enough, the PDK also provides the means to package your PERL as a Windows service, a dll, a System Tray utility, or a .NET library (making your PERL libraries available to your .NET developers).</p>
<p>As with any broad statement, claims of PERLs utility must be accompanied by a cautionary note. The path to PERL Nirvana is not an easy one. Not all PERL modules are of a high quality. Not all PERL applications will easily package using the PDK. And not all PERL code will work on all platforms. Just as with any programming language you, the programmer, must be aware of platform differences and ensure your script will handle them gracefully.</p>
<p>All this said, with a little forethought and care PERL provides a powerful platform for glue software and more.</p>
<div class="footnote">
<hr />
<p><a name="fn1">1.</a> Okay, PHP was officially announced about six months or so before <span class="code">mod_perl</span>, but PERL was already established as the predominant CGI language by then and <span class="code">mod_perl</span> instantly made embedded PERL a success while PHP has <a href="http://en.wikipedia.org/wiki/PHP">some time to go</a> before being mature enough to use seriously.
</div>
<br />Posted in CMCrossroads, Glue Software, PERL, Plain Old Blog, Tools &#039;n&#039; Tips  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/506/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=506&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/01/25/glue-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
	</channel>
</rss>
