<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
>

<channel>
	<title>ITauthor &#187; Perl</title>
	<atom:link href="http://www.itauthor.com/category/perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.itauthor.com</link>
	<description>Stuff about technical writing and software</description>
	<lastBuildDate>Sat, 07 Jan 2012 12:34:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<!-- podcast_generator="Blubrry PowerPress/2.0.4" -->
	<itunes:summary>Talking about technical writing, software and technology in general. The ITauthor Podcast is an advert-free, irregularly published show by technical writers for technical writers or anyone interested in software documentation or IT generally.</itunes:summary>
	<itunes:author>Alistair Christie - ITauthor.com</itunes:author>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.itauthor.com/images/ITauthor-PhotoLogo-300px.jpg" />
	<itunes:owner>
		<itunes:name>Alistair Christie - ITauthor.com</itunes:name>
		<itunes:email>comments@itauthor.com</itunes:email>
	</itunes:owner>
	<managingEditor>comments@itauthor.com (Alistair Christie - ITauthor.com)</managingEditor>
	<copyright>2006-2009</copyright>
	<itunes:subtitle>Talking about technical writing, software and technology in general.</itunes:subtitle>
	<itunes:keywords>itauthor, alistair christie, technology, writing, documentation</itunes:keywords>
	<image>
		<title>ITauthor &#187; Perl</title>
		<url>http://www.itauthor.com/images/ITauthor-PhotoLogo-144px.jpg</url>
		<link>http://www.itauthor.com/category/perl/</link>
	</image>
	<itunes:category text="Technology">
		<itunes:category text="Software How-To" />
		<itunes:category text="Tech News" />
		<itunes:category text="Podcasting" />
	</itunes:category>
		<item>
		<title>Perl basics for beginners (on Windows)</title>
		<link>http://www.itauthor.com/2010/08/07/perl-basics-for-beginners-on-windows/</link>
		<comments>http://www.itauthor.com/2010/08/07/perl-basics-for-beginners-on-windows/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 23:46:50 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/2010/08/07/perl-basics-for-beginners-on-windows/</guid>
		<description><![CDATA[I've been writing some Perl again recently. The scripts I've been writing have all been sitting on a Solaris server to which I've been connecting remotely. But today my connection was super slow (thanks Sky Broadband) so I decided to work locally on my PC for a change. This meant getting Perl working on my [...]]]></description>
			<content:encoded><![CDATA[<p>I've been writing some Perl again recently. The scripts I've been writing have all been sitting on a Solaris server to which I've been connecting remotely. But today my connection was <em>super</em> slow (thanks Sky Broadband) so I decided to work locally on my PC for a change.</p>
<p>This meant getting Perl working on my laptop. It's pretty easy. So I thought I'd blog the steps involved. </p>
<p>Read on if you want to try writing some Perl but:</p>
<ul>
<li>You don't know how to get Perl set up </li>
<li>You don't have access to a server where Perl is already set up </li>
<li>You use Windows and you really don't want to become a Linux guru (at least not today) </li>
</ul>
<p><img style="border-right-width: 0px; margin: 0px 0px 0px 1.5em; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Xampplogo" border="0" alt="Xampplogo" src="http://www.itauthor.com/wp-content/uploads/2010/08/Xampplogo.png" width="200" height="59" /> There are a variety of ways to do this. This is just the way I used a few minutes ago. It uses XAMPP which means that, by the end of the process not only will you have Perl (one of the Ps in &quot;XAMPP&quot;), you'll also have the <strong>A</strong>pache Web Server, <strong>M</strong>ySQL and <strong>P</strong>HP. In case you're wondering, the X apparently stands for cross-platform. You might not want all of these right now but, unless you're really tight for disk space, I'd advise getting them anyway. If you're ever going to do any Web development, having this package of technologies on your laptop, ready to switch on with the click of a button, is fantastically useful.</p>
<p>So here we go:</p>
<ol>
<li>Browse to <a title="http://www.apachefriends.org/en/xampp-windows.html" href="http://www.apachefriends.org/en/xampp-windows.html">http://www.apachefriends.org/en/xampp-windows.html</a> </li>
<li>Scroll down the page to the download section for XAMPP for Windows. </li>
<li>Click the link for the EXE file (content description: &quot;Self-extracting RAR archive&quot;). </li>
<li>Once downloaded, double-click the <strong>xampp-win32-<em>n.n.n</em>.exe</strong> file and confirm you want to run it. </li>
<li>
<p>In the XAMPP for Windows dialog box, change the destination folder if required. </p>
<p>The installer installs XAMPP in an <strong>xampp</strong> directory within the destination you specify. So if you leave the destination at <strong>C:\</strong> then you'll get a <strong>C:\xampp</strong> directory. I prefer to install things in<strong> D:\programs</strong>, so I changed the destination to this.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="xampp-install" border="0" alt="xampp-install" src="http://www.itauthor.com/wp-content/uploads/2010/08/xamppinstall.png" width="537" height="400" /></p>
</li>
<li>
<p>Click <strong>Install</strong>.</p>
<p>From here on it's just a case of following the on-screen instructions. </p>
</li>
<li>After XAMPP is installed,&#160; open the Windows Control Panel and double-click <strong>System</strong>. </li>
<li>Under Tasks, click <strong>Advanced system settings</strong>. </li>
<li>
<p>In the System Properties dialog box, click <strong>Environment Variables</strong>.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="systemProperties" border="0" alt="systemProperties" src="http://www.itauthor.com/wp-content/uploads/2010/08/systemProperties.png" width="420" height="472" /></p>
<p>We're going to add the path to Perl to your system's Path environment variable, so that it knows where to find the Perl executable for running Perl programs.</p>
</li>
<li>
<p>In the Environment Variables dialog box, scroll down the list of system variables and double-click the entry for Path.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="environVariables" border="0" alt="environVariables" src="http://www.itauthor.com/wp-content/uploads/2010/08/environVariables.png" width="394" height="434" /></p>
</li>
<li>
<p>In the Edit System Variable dialog box, click in the Variable value field, move the cursor to the end of the text and add a semicolon followed by <strong><em>&lt;destination&gt;</em>\xampp\perl\bin</strong>. For example, if you installed xampp in C:\ you would enter</p>
<p><strong>;C:\xampp\perl\bin</strong></p>
<p>In my case, my path to Perl is <strong>D:\programs\xampp\perl\bin</strong>.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="editSysVariables" border="0" alt="editSysVariables" src="http://www.itauthor.com/wp-content/uploads/2010/08/editSysVariables.png" width="357" height="151" /></p>
</li>
<li>
<p>Click <strong>OK</strong> in this and the other two dialog boxes. </p>
<p>We'll now test that Perl is installed correctly.</p>
</li>
<li>
<p>Click the Windows button (that is, go to what used to be called the Start menu).</p>
</li>
<li>
<p>Enter <font face="Courier New">cmd</font> into the search box.</p>
<p>A command console window opens.</p>
</li>
<li>
<p>Enter: <font face="Courier New">perl -v</font></p>
<p>If everything's working correctly you'll get a message that shows the Perl version that's installed - for example:</p>
<p><font face="Courier New">This is perl, v5.10.1</font></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="perl-v" border="0" alt="perl-v" src="http://www.itauthor.com/wp-content/uploads/2010/08/perlv.png" width="677" height="340" /></p>
<p>What this means is that, once you have a Perl script, you'll be able to <font face="Courier New">cd</font> to the directory in the command console and run the script by entering <font face="Courier New">perl myscript.pl</font>.</p>
</li>
<li>
<p>Close the command console window.</p>
<p>Now we're going to start doing the interesting stuff: writing a Perl script.</p>
</li>
<li>
<p>Open you're favourite text editor - for example, <a href="http://notepad-plus-plus.org/">Notepad++</a>.</p>
</li>
<li>
<p>Enter the following:</p>
<div style="font-family: consolas,; font-size: small" class="perl" #ffffff;?="#ffffff;?" background-color:="background-color:" monospace;="monospace;" courier,="courier," New?,="New?," Courier="Courier">
<pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 1em/1.2em monospace; background: none transparent scroll repeat 0% 0%; vertical-align: top; padding-top: 0px"><span style="font-style: italic; color: #666666">#!D:\programs\xampp\perl\bin\perl.exe</span>&#160;&#160; &#160;&#160; <span style="color: #000000; font-weight: bold">use</span> strict<span style="color: #339933">;</span>
<span style="color: #000000; font-weight: bold">use</span> warnings<span style="color: #339933">;</span>&#160;&#160; &#160; <a href="http://perldoc.perl.org/functions/print.html"><span style="color: #000066">print</span></a> <span style="color: #ff0000">&quot;Hello world!<span style="color: #000099; font-weight: bold">\n</span>&quot;</span><span style="color: #339933">;</span>
<a href="http://perldoc.perl.org/functions/print.html"><span style="color: #000066">print</span></a> <span style="color: #ff0000">&quot;Press Return to exit.<span style="color: #000099; font-weight: bold">\n</span>&quot;</span><span style="color: #339933">;</span>&#160;&#160; 

&#160;&#160; <span style="color: #b1b100">my</span> <span style="color: #0000ff">$userInput</span> <span style="color: #339933">=</span> <span style="color: #339933">&lt;&gt;;</span></pre>
</p></div>
<p>
      <br />Note: You'll need to change the first line to match the path to <strong>perl.exe</strong> on your computer.</p>
</li>
<li>
<p>Save the file as <strong>myscript.pl</strong>. </p>
</li>
<li>
<p>Open Windows Explorer and navigate to the folder where you saved the script.</p>
</li>
<li>
<p>Right-click <strong>myscript.pl </strong>and choose <strong>Open With</strong> &gt; <strong>Choose Default Program</strong>.</p>
</li>
<li>
<p>In the Open With dialog box, click <strong>Browse</strong>.</p>
</li>
<li>
<p>Browse to your <strong>perl\bin</strong> directory and double-click <strong>perl.exe</strong>.</p>
</li>
<li>
<p>In the Open With dialog box, select the check box labelled <strong>Always use the selected program to open this kind of file</strong> and click <strong>OK</strong>.</p>
<p>&#160;<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="perlOpenWith" border="0" alt="perlOpenWith" src="http://www.itauthor.com/wp-content/uploads/2010/08/perlOpenWith.png" width="579" height="476" /> </p>
<p>You've now associated the <strong>.pl</strong> file name extension with the <strong>perl.exe</strong> executable. Windows now knows to use <strong>perl.exe</strong> to run <strong>.pl</strong> files. </p>
<p>So let's test it out.</p>
</li>
<li>
<p>In Windows Explorer, double-click <strong>myscript.pl</strong>.</p>
</li>
<li>
<p>A command console window opens to run the script. Our two lines are printed to standard output (in layman's terms they're displayed) and (thanks to <font face="Courier New">$userInput = &lt;&gt;</font>) the script waits for you to enter something before exiting. If you didn't have this line the console window would just close and you wouldn't have time to read what was on the screen.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="helloworld-output" border="0" alt="helloworld-output" src="http://www.itauthor.com/wp-content/uploads/2010/08/helloworldoutput.png" width="677" height="340" /> </p>
<p>Job done. From now on you can write Perl scripts in your text editor and run them by just double-clicking the file in Windows Explorer.</p>
</li>
</ol>
<h2>So what?</h2>
<p>Yeh, okay, so it's just another &quot;Hello world!&quot; program. </p>
<p>But now that you've got Perl set up and you know how to run a program, you can go off and learn to do lots of stuff with Perl.</p>
<p>Me, I'm going off to write a Perl script that will run every half an hour to: parse a table on a &quot;Revision history&quot; Web page within a WebHelp site generated from Madcap Flare, look for new rows in the table (i.e. details of new changes to the WebHelp) and, if it finds any, email the details to a mailing list and then alter the HTML of the Web page adding a style tag to the rows to indicate that the mailing list has been mailed the details. </p>
<p>I hope you find this useful. Drop me a comment to let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2010/08/07/perl-basics-for-beginners-on-windows/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Gotchas with running a Perl script as a cron job</title>
		<link>http://www.itauthor.com/2010/08/03/gotchas-with-running-a-perl-script-as-a-cron-job/</link>
		<comments>http://www.itauthor.com/2010/08/03/gotchas-with-running-a-perl-script-as-a-cron-job/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 20:20:00 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/2010/08/03/gotchas-with-running-a-perl-script-as-a-cron-job/</guid>
		<description><![CDATA[So you've written a Perl script and it runs fine from the command line using a command such as: perl /home/alistair/scripts/myscript.pl Great, so now you set up a cron job so that the script will run automatically. For example, let's say you want to run it every Monday morning at 4.20 am: 20 4 * [...]]]></description>
			<content:encoded><![CDATA[<p>So you've written a Perl script and it runs fine from the command line using a command such as:</p>
<p> <code>perl /home/alistair/scripts/myscript.pl </code>
<p>Great, so now you set up a cron job so that the script will run automatically. For example, let's say you want to run it every Monday morning at 4.20 am:</p>
<p> <code>20 4 * * 1 perl /home/alistair/scripts/myscript.pl </code>
<p>&#160; <br />However, when this runs it generates the following email: </p>
<p> <code>Your &quot;cron&quot; job on myserver    <br />perl /home/alistair/scripts/myscript.pl     </p>
<p>produced the following output:     </p>
<p>Can't locate DBI.pm in @INC (@INC contains: /usr/perl5/5.6.1/lib/sun4-solaris-64int /usr/perl5/5.6.1/lib /usr/perl5/site_perl/5.6.1/sun4-solaris-64int /usr/perl5/site_perl/5.6.1 /usr/perl5/site_perl /usr/perl5/vendor_perl/5.6.1/sun4-solaris-64int /usr/perl5/vendor_perl/5.6.1 /usr/perl5/vendor_perl .) at /home/alistair/scripts/myscript.pl line 15.     <br />BEGIN failed--compilation aborted at /home/alistair/scripts/myscript.pl line 15. </code>
<p>&#160; <br />What this means is that your script uses a Perl module (in this example, DBI.pm) which can't be found. The error message shows all the paths in the @INC list of paths where Perl looks for modules. So, for some reason, Perl found the module when <em>you</em> ran the script, but didn't find the module when cron ran the script as you.</p>
<p>The reason is that cron doesn't run in the same environment that you're using. When you connect to the server, you probably automatically change to your preferred shell (e.g. csh, ksh or bash) and load up a whole set of environment variables. This happens within the startup file – for example, <strong>.bashrc</strong> or <strong>.cshrc</strong>. But cron doesn't load up any of this, and it uses sh by default.</p>
<p>To see what's in @INC within <em>your</em> environment use this command:</p>
<p> <code>perl -le 'print for grep {$_ ne q{.}and -d} @INC' </code>
<p>&#160; <br />And you'll probably notice differences between the output you get and the contents of @INC listed in the error message.</p>
<p>So, to make sure @INC contains the necessary paths in any environment, load it up from within your Perl script. To do this, add something like the following to the top of your Perl script, just after the path to Perl: </p>
<p> <code>BEGIN {    <br />&#160;&#160;&#160;&#160; push @INC,( '/usr/local/lib/perl5/5.8.2/sun4-solaris',     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; '/usr/local/lib/perl5/site_perl/5.8.2/sun4-solaris',     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; '/usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris',     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; '/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris' );     <br />} </code>
<p>So now Perl will be able to find the missing Perl module. Sorted! Well maybe not.</p>
<p>If you now try running the script from the cron job you may get something like: </p>
<p> <code>Your &quot;cron&quot; job on myserver    <br />perl /home/alistair/scripts/myscript.pl     </p>
<p>produced the following output:     </p>
<p>ld.so.1: perl: fatal: relocation error: file /usr/local/lib/perl5/site_perl/5.8.0/sun4-solaris/auto/DBI/DBI.so: symbol Perl_PerlIO_stderr: referenced symbol not found Killed </code>
<p><em>Now</em> it's complaining about not finding something called <strong>ld.so.1</strong>. The problem here is with your PATH. </p>
<p>On my server, <strong>ld.so.1</strong> lives in <strong>/usr/lib</strong>. You should be able to find out where <strong>ld.so.1</strong> is by running:</p>
<p> <code>whereis ld.so.1</code>
<p><strong>/usr/lib</strong> isn't exactly an obscure place to look, but it's not in the PATH when the cron job runs. So the easy solution is to explicitly set the contents of the PATH environment variable in the cron job:</p>
<p> <code>20 4 * * 1 PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/lib; perl /home/alistair/scripts/myscript.pl </code>
<p>Now, just before the Perl script is run, the PATH gets set to three paths: <strong>/usr/local/bin</strong>, <strong>/usr/bin</strong>, <strong>/usr/sbin</strong> and <strong>/usr/lib</strong>. The syntax used here is that required by the sh shell in which cron runs.</p>
<p>At last, job done. The script runs and you'll be emailed any output it generates.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2010/08/03/gotchas-with-running-a-perl-script-as-a-cron-job/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP (or Perl) one line if/then/else statements</title>
		<link>http://www.itauthor.com/2009/08/08/php-or-perl-one-line-ifthenelse-statements/</link>
		<comments>http://www.itauthor.com/2009/08/08/php-or-perl-one-line-ifthenelse-statements/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 06:53:35 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/2009/08/08/php-or-perl-one-line-ifthenelse-statements/</guid>
		<description><![CDATA[If you're toggling something between two states in PHP or Perl it's often handy to use an if/then/else one liner. In pseudocode this goes like this: &#60;if this evaluates to TRUE&#62; then &#60;parse this&#62; else &#60;parse this&#62; All you need to do is replace the &#34;then&#34; with a question mark and the &#34;else&#34; with a [...]]]></description>
			<content:encoded><![CDATA[<p>If you're toggling something between two states in PHP or Perl it's often handy to use an if/then/else one liner.</p>
<p>In pseudocode this goes like this:</p>
<p><em>&lt;<strong>if </strong>this evaluates to TRUE&gt; </em><strong>then </strong><em>&lt;parse this&gt; </em><strong>else </strong><em>&lt;parse this&gt;</em></p>
<p>All you need to do is replace the &quot;then&quot; with a question mark and the &quot;else&quot; with a colon:</p>
<p><em>&lt;<strong>if </strong>this evaluates to TRUE&gt; </em><strong>? </strong><em>&lt;parse this&gt; </em><strong>:</strong><strong> </strong><em>&lt;parse this&gt;</em></p>
<p>For example:</p>
<p><span style="color: #c0c0c0"><em>print</em>&#160; </span>$trueOrFalse ? &quot;you're telling the truth&quot; : &quot;you're lying&quot;;</p>
<p>Ignore the print command, it's not part of the if/then/else statement, it's just here to do something with the outcome of that statement.</p>
<p>The expression immediately to the left of the question mark is evaluated. The expression between the question mark and the colon is parsed if the expression evaluates to TRUE, otherwise the expression immediately to the right of the colon is parsed. So in the above example, either &quot;you're telling the truth&quot; or &quot;you're lying&quot; is printed, depending on whether $trueOrFalse is ... you guessed it ... TRUE or FALSE.</p>
<p>But perhaps a more common situation is toggling the value assigned to a variable. For example, toggling between TRUE and FALSE:</p>
<p><span style="color: #c0c0c0"><em>$trueOrFalse = </em></span>$trueOrFalse ? FALSE : TRUE;</p>
<p>Here's a practical example of the use of if/then/else one liners. There's two in this chunk of PHP. The scroll box list below the code is the kind of thing this PHP produces.</p>
<p>&lt;div style=&quot;overflow:auto; height:100px; width:300px; border:3px groove #DDD; padding:0&quot;&gt;    <br />&lt;?php     <br />&#160;&#160;&#160; $alternateLine = FALSE;     <br />&#160;&#160;&#160; while($presidentsArray) {     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; print &quot;&lt;div style=\&quot;background-color:&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; print $alternateLine ? &quot;#F5F8F9&quot; : &quot;white&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; print &quot;; padding-bottom: 1px\&quot;&gt; &amp;nbsp; &amp;nbsp; &lt;a href=\&quot;someURL\&quot; title=\&quot;This link goes nowhere\&quot;&gt;&quot; .     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $presidentsArray['name'] . &quot;&lt;/a&gt;&lt;/div&gt;&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $alternateLine = $alternateLine ? FALSE : TRUE;     <br />&#160;&#160;&#160; }     <br />?&gt;     <br />&lt;/div&gt;</p>
<div style="border-bottom: #dddddd 3px groove; border-left: #dddddd 3px groove; padding-bottom: 0pt; padding-left: 0pt; width: 300px; padding-right: 0pt; height: 100px; overflow: auto; border-top: #dddddd 3px groove; border-right: #dddddd 3px groove; padding-top: 0pt">
<div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">George Washington</a></div>
<div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">John Adams</a></div>
<div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">Thomas Jefferson</a></div>
<div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">James Madison</a></div>
<div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">James Monroe</a></div>
<div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">John Quincy Adams</a></div>
<div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">Andrew Jackson</a></div>
<div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">Martin Van Buren</a></div>
<div style="padding-bottom: 1px; background-color: white">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">William Henry Harrison</a></div>
<div style="padding-bottom: 1px; background-color: #f5f8f9">&#160;&#160;&#160; <a title="This link goes nowhere" href="someURL">John Tyler</a></div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2009/08/08/php-or-perl-one-line-ifthenelse-statements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing your CVS host</title>
		<link>http://www.itauthor.com/2009/02/05/changing-your-cvs-host/</link>
		<comments>http://www.itauthor.com/2009/02/05/changing-your-cvs-host/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 12:29:48 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[UNIX/Linux]]></category>

		<guid isPermaLink="false">http://www.itauthor.eu/2009/02/05/changing-your-cvs-host/</guid>
		<description><![CDATA[What do you do if the host name of your CVS server changes? For example, here’s my case. I checked out a whole lot of CVS modules from the repository while my laptop was on the domain. Now however, thanks to Vista SP1 not playing with an antiquated NT domain, the laptop can’t join the [...]]]></description>
			<content:encoded><![CDATA[<p>What do you do if the host name of your CVS server changes? For example, here’s my case. I checked out a whole lot of CVS modules from the repository while my laptop was on the domain. Now however, thanks to Vista SP1 not playing with an antiquated NT domain, the laptop can’t join the domain so to connect to a server I need to qualify its name with a domain. So, whereas I checked out the modules using the hostname “cvshost”, I now need to use “cvshost.mydomain.co.uk”.</p>
<p>Unfortunately, TortoiseCVS has no way to change the host names for modules you’ve already checked out. WinCVS can, supposedly, do this thanks to a macro. However, WinCVS stubbornly tells me I don’t have Python installed (I do) and therefore won’t let me use macros.</p>
<p>The solution is to just go through all the CVS “Root” files and change the host name. The Root file lives in the CVS directory at each level within a checked out module. This would be a laborious task by hand, but if you have SUA (Microsoft’s Subsystem for UNIX Applications) and Perl installed it’s easy. Just pull up a Korn shell and browse to the directory within which your checked out CVS modules live.</p>
<p>Run the following command.</p>
<p><strong>find . -name 'Root' -print0 | xargs -0 perl -pi -e 's/oldhostname/newhostname/g'</strong></p>
<p>For example, I ran the command:</p>
<p><strong>find . -name 'Root' -print0 | xargs -0 perl -pi -e 's/cvshost/cvshost.mydomain.co.uk/g'</strong></p>
<p>Which changed the Contents of the Root file from:</p>
<p><font face="Courier">:pserver:achristie@cvshost:/company/repository</font></p>
<p>to:</p>
<p><font face="Courier">:pserver:achristie@cvshost.mydomain.co.uk:/company/repository</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2009/02/05/changing-your-cvs-host/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting up the Perl CPAN module installer</title>
		<link>http://www.itauthor.com/2007/10/11/setting-up-the-perl-cpan-module-installer/</link>
		<comments>http://www.itauthor.com/2007/10/11/setting-up-the-perl-cpan-module-installer/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 13:03:50 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/2007/10/11/setting-up-the-perl-cpan-module-installer/</guid>
		<description><![CDATA[perl -MCPAN -e 'install Collection::Module' is the standard way of installing Perl modules. The first time you run this you get asked lots of questions. For most of these you can just hit Enter to accept the default. However, you must tell it where to find the modules - i.e. the name of a CPAN [...]]]></description>
			<content:encoded><![CDATA[<p>
<p><font color="#5f5f5f"></font></p>
<p>   <font face="Courier New" size="2">perl -MCPAN -e 'install <em>Collection::Module</em>'</font></p>
<p>is the standard way of installing Perl modules.</p>
<p>The first time you run this you get asked lots of questions. For most of these you can just hit Enter to accept the default. However, you must tell it where to find the modules - i.e. the name of a CPAN mirror site. You can add several, one after the other, so that, if the first one fails, it just tries the next one in the <strong>urllist</strong>.</p>
<p>You can find a list of URLs at:</p>
<p><a title="http://www.cpan.org/SITES.html" href="http://www.cpan.org/SITES.html">http://www.cpan.org/SITES.html</a></p>
<p>Now common sense might tell you that all you need to do is copy the URL for one of the FTP sites, paste it in and Bob's your uncle. Not so, in some cases, however, because if you're sitting behind a firewall that's fussy about what it allows to be passed via FTP, then you'll have to choose an HTTP URL rather than one of the FTP ones.</p>
<p>If you've already added URLs and got failure messages when you try to install modules, try adding an HTTP one as your first choice site. To do this, go to the CPAN command prompt:</p>
<p><font face="Courier New" size="2">perl -MCPAN -eshell</font></p>
<p>Once there enter:</p>
<p><font face="Courier New" size="2">o conf</font></p>
<p>to list your configuration settings. You'll see your <strong>urllist</strong>. Now enter:</p>
<p><font face="Courier New" size="2">o conf urllist unshift <em>HTTP-URL</em></font></p>
<p>This sticks the URL at the top of the list. Depending on the age of your CPAN module and the way it's been set up, you may now have to do:</p>
<p><font face="Courier New" size="2">o conf commit</font></p>
<p>to make the change permanent, otherwise it will only last for the duration of the interactive session.</p>
<p>Now try installing the module again using:</p>
<p><font size="2"><font face="Courier New">install <em>Collection::Module</em></font></font></p>
<p>To quit out of the CPAN shell enter:</p>
<p><font face="Courier New" size="2">quit</font></p>
<p>And if installing using the CPAN installer still fails, you can always just download the package from CPAN and install it manually using <a href="http://www.itauthor.com/2007/10/03/installing-perl-modules-a-reminder/">the instructions I described recently</a>.</p>
<p>However, if you're somewhere where there's no access to the internet - or the server is locked down to prevent anything being installed from a remote source - you're going to have to use a copy of CPAN that you've downloaded previously onto a DVD or a thumb drive. For more on this have a listen to the Perlcast episode <a href="http://perlcast.com/2007/09/29/making-my-own-cpan/">Making My Own CPAN by Brian D Foy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2007/10/11/setting-up-the-perl-cpan-module-installer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing Perl modules &#8211; a reminder</title>
		<link>http://www.itauthor.com/2007/10/03/installing-perl-modules-a-reminder/</link>
		<comments>http://www.itauthor.com/2007/10/03/installing-perl-modules-a-reminder/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 19:13:12 +0000</pubDate>
		<dc:creator>ac</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/2007/10/03/installing-perl-modules-a-reminder/</guid>
		<description><![CDATA[The simplest way to install a Perl module is to use the Perl CPAN module. Of course you have to install this first. Once you have you can do perl -MCPAN -e 'install Collection::Module' For example: perl -MCPAN -e 'install Magic::Invisibility' If the module isn't available for installation this way, but a package is available [...]]]></description>
			<content:encoded><![CDATA[<p>The simplest way to install a Perl module is to use the Perl CPAN module. Of course you have to install this first. Once you have you can do <tt>perl -MCPAN -e 'install <em>Collection</em>::<em>Module</em>'</tt></p>
<p>For example: <tt>perl -MCPAN -e 'install Magic::Invisibility'</tt></p>
<p>If the module isn't available for installation this way, but a package <em>is</em> available for download at the CPAN Web site, or elsewhere, you can usually install it the manual way. For example, following my recent post about a login banner, I recently installed the Text::Banner module on a Linux server as follows:</p>
<p><font face="Courier New" size="2">wget http://search.cpan.org/CPAN/authors/id/L/LO/LORY/Text-Banner-1.00.tar.gz      <br /></font><font face="Courier New" size="2">gunzip Text*gz      <br /></font><font face="Courier New" size="2">tar xvf Text*tar      <br /></font><font face="Courier New" size="2">cd Banner      <br /></font><font face="Courier New" size="2">cat README</font></p>
<p><em>... [I read the README file at this point]</em></p>
<p><font face="Courier New" size="2">perl Makefile.PL      <br /></font><font face="Courier New" size="2">make      <br /></font><font face="Courier New" size="2">make test      <br /></font><font face="Courier New" size="2">make install      <br /></font><font face="Courier New" size="2">perl -MText::Banner -e 1</font></p>
<p><em>[no error message means it was installed successfully]</em></p>
<p>For more detail (including details of how to install into a non-standard location) see:</p>
<p><a title="http://search.cpan.org/~jhi/perl-5.8.0/pod/perlmodinstall.pod" href="http://search.cpan.org/~jhi/perl-5.8.0/pod/perlmodinstall.pod">http://search.cpan.org/~jhi/perl-5.8.0/pod/perlmodinstall.pod</a></p>
<p>&#xA0;</p>
<p>
<hr /><strong>UPDATE </strong><em>(13/10/2007):</em></p>
<p>I always used to use the&#xA0; <font face="Courier New" size="2">perl -M<em>Collection::Module</em> -e 1 </font>way of checking whether a module was installed. Another, in some ways better, way to check is to print the version number of a module. To do this enter the command:</p>
<p><font face="Courier New" size="2">perl -e &quot;use <em>Collection::Module</em>; print $<em>Collection::Module</em>::VERSION&quot;;</font></p>
<p>For example:</p>
<p><font face="Courier New" size="2">perl -e &quot;use SOAP::Lite; print $SOAP::Lite::VERSION&quot;;</font></p>
<p>If the module is installed, this either prints the version number or, if the module hasn't been built to report its version, a blank line.</p>
<p>If the module is not installed, you get a &quot;Can't locate ...&quot; error message.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2007/10/03/installing-perl-modules-a-reminder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Check whether a Perl module is installed</title>
		<link>http://www.itauthor.com/2005/08/16/check-whether-a-perl-module-is-installed/</link>
		<comments>http://www.itauthor.com/2005/08/16/check-whether-a-perl-module-is-installed/#comments</comments>
		<pubDate>Tue, 16 Aug 2005 13:37:38 +0000</pubDate>
		<dc:creator>alistair at work</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/?p=155</guid>
		<description><![CDATA[To check whether a Perl module is installed, use the command: perl -M&#60;module&#62; For example: perl -MCGI or: perl -M&#60;module&#62;::&#60;module&#62;::&#60;module&#62; For example: perl -MIO::Socket::UNIX If perl returns a scree of stuff beginning "Can't locate...", then the module isn't installed. If all you get is a new line, the module is installed - in which case [...]]]></description>
			<content:encoded><![CDATA[<p>To check whether a Perl module is installed, use the command:</p>
<p><strong>perl -M</strong><em>&lt;module&gt;</em></p>
<p>For example:<br />
<strong>perl -MCGI</strong></p>
<p>or: </p>
<p><strong>perl -M</strong><em>&lt;module&gt;</em><strong>::</strong><em>&lt;module&gt;</em><strong>::</strong><em>&lt;module&gt;</em></p>
<p>For example:<br />
<strong>perl -MIO::Socket::UNIX</strong></p>
<p>If perl returns a scree of stuff beginning "Can't locate...", then the module isn't installed.</p>
<p>If all you get is a new line, the module is installed - in which case press <strong>Ctrl+D</strong> to get back to the command prompt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2005/08/16/check-whether-a-perl-module-is-installed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl Coding Standards</title>
		<link>http://www.itauthor.com/2004/08/12/perl-coding-standards/</link>
		<comments>http://www.itauthor.com/2004/08/12/perl-coding-standards/#comments</comments>
		<pubDate>Thu, 12 Aug 2004 15:13:30 +0000</pubDate>
		<dc:creator>alistair at work</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/?p=81</guid>
		<description><![CDATA[A colleague pointed out this page: www.bbc.co.uk/guidelines/webdev/AppA.Perl_Coding_Standards.htm This is a set of Perl coding guidelines for developers working for the BBC. Most of what's in it is straightforward good sense. One thing I hadn't come across, and hadn't considered before is flagged up by the following paragraph: "You MUST NOT put markup language in code. [...]]]></description>
			<content:encoded><![CDATA[<p>A colleague pointed out this page:</p>
<p><a href="http://www.bbc.co.uk/guidelines/webdev/AppA.Perl_Coding_Standards.htm">www.bbc.co.uk/guidelines/webdev/AppA.Perl_Coding_Standards.htm</a></p>
<p>This is a set of Perl coding guidelines for developers working for the BBC. Most of what's in it is straightforward good sense. One thing I hadn't come across, and hadn't considered before is flagged up by the following paragraph:</p>
<p>"You MUST NOT put markup language in code. CPAN provides several good templating modules, and a stripped-down version of an HTML::Template (called BBC::CGI::Template) can also be used. There should not be any situation where you need to put HTML or other markup into Perl code."</p>
<p>This caused me to go away and look at the HTML::Template module. I use HTML in my Perl CGI scripts all the time. Using templates seems like a much better idea and I intend to start using templates from now on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2004/08/12/perl-coding-standards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introductions to Perl</title>
		<link>http://www.itauthor.com/2004/06/28/introductions-to-perl/</link>
		<comments>http://www.itauthor.com/2004/06/28/introductions-to-perl/#comments</comments>
		<pubDate>Mon, 28 Jun 2004 22:44:35 +0000</pubDate>
		<dc:creator>alistair at home</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/?p=79</guid>
		<description><![CDATA[I came across an excellent, gentle introduction to the basics of the Perl programming language at: www.cs.rpi.edu/~hollingd/eiw/notes/PerlIntro/PerlIntro.html However, for anyone considering dabbling in Perl (or making a career out of it), the standard and best starter book on Perl is: Programming Perl by Larry Wall, Tom Christiansen and Randal Schwartz. Chapter 1 of this book [...]]]></description>
			<content:encoded><![CDATA[<p>I came across an excellent, gentle introduction to the basics of the Perl programming language at:</p>
<p><a href="http://www.cs.rpi.edu/~hollingd/eiw/notes/PerlIntro/PerlIntro.html">www.cs.rpi.edu/~hollingd/eiw/notes/PerlIntro/PerlIntro.html</a></p>
<p>However, for anyone considering dabbling in Perl (or making a career out of it), the standard and best starter book on Perl is: </p>
<p><a href="http://iis1.cps.unizar.es/Oreilly/perl/prog/index.htm"><i>Programming Perl</i></a> by Larry Wall, Tom Christiansen and Randal Schwartz.</p>
<p>Chapter 1 of this book &ndash; where Larry Wall explains the basics of Perl by drawing comparison to the syntax of spoken language &ndash; is still my favourite piece of computer literature. I read it on a flight from Edinburgh to London, years ago, and I remember being utterly bowled over by the clarity of the explanation. I consider that chapter a masterpiece of computer writing because it's clear, witty, easy to read and I don't think it could have been written any better.</p>
<p>Another useful book, and another one that pretty much every Perl programmer has read, is:</p>
<p><a href="http://iis1.cps.unizar.es/Oreilly/perl/learn/index.htm"><i>Learning Perl</i></a> by Randal Schwartz, Tom Christiansen and Larry Wall.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2004/06/28/introductions-to-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which Perl modules are installed</title>
		<link>http://www.itauthor.com/2004/06/13/which-perl-modules-are-installed/</link>
		<comments>http://www.itauthor.com/2004/06/13/which-perl-modules-are-installed/#comments</comments>
		<pubDate>Sun, 13 Jun 2004 18:01:24 +0000</pubDate>
		<dc:creator>alistair at home</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/?p=75</guid>
		<description><![CDATA[You want to use a Perl module in a script you are writing. How do you know if it's already installed? Your first stop is to the perlmodinstall man page. At a command prompt, type: man perlmodinstall Alternatively, you can look up once of the many HTML versions of this man page (or any other [...]]]></description>
			<content:encoded><![CDATA[<p>You want to use a Perl module in a script you are writing. How do you know if it's already installed? Your first stop is to the perlmodinstall man page. At a command prompt, type:</p>
<p><b>man perlmodinstall</b></p>
<p>Alternatively, you can look up once of the many HTML versions of this man page (or any other man page) on the Internet. For example:<br />
<a href="http://www.hmug.org/man/1/perlmodinstall.html">www.hmug.org/man/1/perlmodinstall.html</a></p>
<p>The man page tells you what you need to know:</p>
<p><em>First, are you sure that the module isn't already on your system?  Try "<b>perl -MFoo -e 1</b>".  (Replace "Foo" with the name of the module; for instance, "<b>perl -MCGI::Carp -e 1</b>". </p>
<p>If you don't see an error message, you have the module. (If you do see an error message, it's still possible you have the module, but that it's not in your path, which you can display with "<b>perl -e "print qq(@INC)"</b>".)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2004/06/13/which-perl-modules-are-installed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filehandles with forks</title>
		<link>http://www.itauthor.com/2003/12/08/filehandles-with-forks/</link>
		<comments>http://www.itauthor.com/2003/12/08/filehandles-with-forks/#comments</comments>
		<pubDate>Mon, 08 Dec 2003 08:32:26 +0000</pubDate>
		<dc:creator>alistair at home</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/?p=34</guid>
		<description><![CDATA[Perl tip. How to fork a process, running a command on an existing file (e.g. decoding a coded DB) and pass the results to a filehandle, without having to save the results as a file.]]></description>
			<content:encoded><![CDATA[<p>I was debugging a Perl script last week and wanted to know why a command in an open statement ended with a pipe. For example:</p>
<div>open MYFILEHANDLE,"decode myDB|" or die "Failed to decode the database.";</div>
<p>The answer is that the pipe forks a new process. This is explained here:<br />
<a href="http://www.perldoc.com/perl5.8.0/pod/func/open.html ">http://www.perldoc.com/perl5.8.0/pod/func/open.html </a></p>
<p>While looking I came across good little Perl tutorial:<br />
<a href="http://www.geocities.com/SiliconValley/Vista/6493/perl/tutorial.html">http://www.geocities.com/SiliconValley/Vista/6493/perl/tutorial.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2003/12/08/filehandles-with-forks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generating an HTML representation of a Perl script</title>
		<link>http://www.itauthor.com/2003/11/21/generating-an-html-representation-of-a-perl-script/</link>
		<comments>http://www.itauthor.com/2003/11/21/generating-an-html-representation-of-a-perl-script/#comments</comments>
		<pubDate>Fri, 21 Nov 2003 23:13:03 +0000</pubDate>
		<dc:creator>alistair at home</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.itauthor.com/wordpress/?p=20</guid>
		<description><![CDATA[I'm trying to sort out the main part of my site. It needs a proper home page for starters. So I was looking at sites and grabbing bits of HTML that I thought might be useful. In doing so it became clear that life would be easier if I could take my cut and pasted [...]]]></description>
			<content:encoded><![CDATA[<p>I'm trying to sort out the main part of my site. It needs a proper home page for starters. So I was looking at sites and grabbing bits of HTML that I thought might be useful. In doing so it became clear that life would be easier if I could take my cut and pasted bits of HTML and run them through a "pretty printer" to reformat the code in a consistent and easier to read design. There's got to be <i>loads</i> of programs out there that'll do that, I thought - I'll just go and get one.</p>
<p>It turned out to be harder to find what I wanted than I thought it would be. But while looking I came across something I'd heard of, or read about, at some time, but never gone and tried before. It's a Perl reformatter called perltidy. You can get it at <a href="http://perltidy.sourceforge.net/">SourceForge</a>.</p>
<p>You can download a ZIP file. But you then need to "make" the install. I use Windows XP and ActiveState Perl. I tried the "make" command, but I obviously didn't have make. However, this isn't a problem. You can download <b>nmake</b> from Microsoft at <a href="http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe">http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe</a>. This is a self-extracting executable that puts the files nmake.exe and nmake.err in the same directory. All you need to do is move them to a directory that's in your PATH and you can use nmake instead of make.</p>
<p>The result is a program called perltidy that tidies up your Perl scripts. However, that's not of so much interest to me because I'm quite obsessive about spacing, indenting, aligning and commenting my Perl code. What's really good about perltidy is that you can run it on your Perl script with the -html flag (e.g. <b>perltidy -html myscript.pl</b>) and it outputs an HTML file that you can use to display your script on a website.</p>
<p>It works really sweetly and the results are great. If I had time I'd stick a page up here so that you could see what I mean, but that'll have to wait. I've got lots of other stuff to do. Like the website. I still haven't found that HTML reformatter. But perltidy is a nice find and I can thoroughly recommend it, as long as you're okay about using command-line tools.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itauthor.com/2003/11/21/generating-an-html-representation-of-a-perl-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

