<?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/"
	>

<channel>
	<title>hmmm.... &#187; perl</title>
	<atom:link href="http://michael.thegrebs.com/tag/perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://michael.thegrebs.com</link>
	<description></description>
	<lastBuildDate>Thu, 27 Oct 2011 18:48:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Devops w/ Perl @ Linode PPW Talk Slides</title>
		<link>http://michael.thegrebs.com/2011/10/27/devops-w-perl-linode-ppw-talk-slides/</link>
		<comments>http://michael.thegrebs.com/2011/10/27/devops-w-perl-linode-ppw-talk-slides/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 18:46:31 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=330</guid>
		<description><![CDATA[Earlier this month a gave a talk about Linode&#8217;s use of Perl for devopsy things at the Pittsburgh Perl Workshop. Finally getting around to posting the slides online. I wanted to add some details so more of the slides made &#8230; <a href="http://michael.thegrebs.com/2011/10/27/devops-w-perl-linode-ppw-talk-slides/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Earlier this month a gave a talk about <a href="http://www.linode.com">Linode&#8217;s</a> use of <a href="http://www.perl.org/">Perl</a> for <a href="http://en.wikipedia.org/wiki/DevOps">devopsy</a> things at the<a href="http://pghpw.org/ppw2011/"> Pittsburgh Perl Workshop</a>.  Finally getting around to posting the slides online.  I wanted to add some details so more of the slides made since on their own but haven&#8217;t gotten around to it yet.</p>
<p><a href='http://michael.thegrebs.com/wp-content/uploads/2011/10/Linode-DevOps-w-Perl.pdf'>DevOps w/ Perl @ Linode.pdf</a> (2.1MB)</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2011/10/27/devops-w-perl-linode-ppw-talk-slides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Local Growl Notifications from Remote Irssi</title>
		<link>http://michael.thegrebs.com/2011/06/12/local-growl-notifications-from-remote-irssi/</link>
		<comments>http://michael.thegrebs.com/2011/06/12/local-growl-notifications-from-remote-irssi/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 04:50:05 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[irssi]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=323</guid>
		<description><![CDATA[What I&#8217;ve tried, What I want Skip to the next section if you just care about the end result. In the past, I&#8217;ve had my remote Irssi client send UDP Growl packets to my static home IP that were then &#8230; <a href="http://michael.thegrebs.com/2011/06/12/local-growl-notifications-from-remote-irssi/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>What I&#8217;ve tried, What I want</strong><br />
Skip to the next section if you just care about the end result.  In the past, I&#8217;ve had my remote <a href="http://irssi.org/">Irssi</a> client send UDP <a href="http://growl.info/">Growl</a> packets to my static home IP that were then forwarded to the broadcast address on the local network.  This worked great and allowed me to get Growl notifications on which ever computer I happened to be sitting at.  These days, I&#8217;m always on my laptop, even when sitting at another computer (<a href="http://www.abyssoft.com/software/teleport/">Teleport</a> for the mega win).</p>
<p>I wanted a solution that would allow me to receive Growl notifications without having to forward any ports and no matter what the public IP for my laptop may be.  I use <a href="http://beta.metacpan.org/module/App::PersistentSSH">App::PersistentSSH</a> to maintain a persistent SSH control master connection to my <a href="http://www.linode.com/">Linode</a> so the ideal solution uses a reverse tunnel over this connection to get the notifications too my laptop.</p>
<p><strong>My Current Solution</strong></p>
<ul>
<li>Added
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--ssh_opts -R 127.0.0.1:22992:127.0.0.1:22</div></div>
<p>to my <a href="http://beta.metacpan.org/module/App::PersistentSSH">App::PersistentSSH</a> command line.  This connects localhost:22992 on my Linode to port 22 on my laptop.</li>
<li><a href="https://github.com/mikegrb/irssi-scripts/blob/master/local-growl.pl">local-growl.pl</a> &#8212; an Irssi script that uses growlnotify to send growl notifications</li>
<li><a href="https://github.com/mikegrb/irssi-scripts/blob/master/growlnotify.pl">growlnotify.pl</a> &#8212; an ssh proxy for growlnotify, passes it&#8217;s arguments to growlnotify on a remote system via ssh</li>
</ul>
<p>Simple push growl notifications from my <a href="http://www.linode.com">Linode</a> -> my MacBook Air whenever it is online.  The scripts and an irssi.png to use in the notifications are available on <a href="https://github.com/mikegrb/irssi-scripts">GitHub</a>.</p>
<p>Configuration for local-growl.pl is via Irssi&#8217;s in built settings, type</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/set growl</div></div>
<p>to see a list of possibilites:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[local-growl]<br />
growl_enabled = ON<br />
growl_growlnotifypath = /home/michael/bin/growlnotify<br />
growl_image_path = /Users/mgreb/Documents/irssi.png<br />
growl_show_hilights = ON<br />
growl_show_private_messages = ON<br />
growl_sticky = OFF</div></div>
<p>Configuration for growlnotify.pl is via a set of config variables near the top:</p>
<div class="codecolorer-container perl vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="perl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ssh_host</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'localhost'</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ssh_port</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #cc66cc;">22992</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ssh_user</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'mgreb'</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$growlnotify</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'/usr/local/bin/growlnotify'</span><span style="color: #339933;">;</span></div></div>
<p>Hopefully you will find this useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2011/06/12/local-growl-notifications-from-remote-irssi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Task Management with Hiveminder and Perl</title>
		<link>http://michael.thegrebs.com/2010/03/13/task-management-with-hiveminder-and-perl/</link>
		<comments>http://michael.thegrebs.com/2010/03/13/task-management-with-hiveminder-and-perl/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 23:08:25 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[hiveminder]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=247</guid>
		<description><![CDATA[This is how I manage my tasks with Hiveminder on a weekly basis and the Perl script that helps me do it. I don&#8217;t really expect the Perl script to be useful to anyone as-is but portions of it may &#8230; <a href="http://michael.thegrebs.com/2010/03/13/task-management-with-hiveminder-and-perl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is how I manage my tasks with <a href="http://hiveminder.com/">Hiveminder</a> on a weekly basis and the Perl script that helps me do it.  I don&#8217;t really expect the Perl script to be useful to anyone as-is but portions of it may be useful to others, as well as the general work flow, so I&#8217;ve decided to share them.</p>
<p>At <a href="http://www.linode.com/">Linode</a> we have a wiki page where we list 5 or more tasks we wish to accomplish during the week.  There is a heading for each employee and below the heading we place our tasks.   Throughout the week we can add additional tasks or mark existing ones as done.</p>
<p>I&#8217;ve used <a href="http://hiveminder.com/">Hiveminder</a> for some time.  When we started the weekly task lists at <a href="http://www.linode.com/">Linode</a> I found that taking a few minutes to figure out which tasks I wish to complete in the coming week works quite well for me.  I started marking these tasks with the &#8216;week&#8217; tag in <a href="http://hiveminder.com/">Hiveminder</a>.  I quickly ended up writing a perl script, <a href="http://thegrebs.com/~michael/tasks/week.txt">week.pl</a>, to help me manage hem.</p>
<h3>My Weekly Workflow</h3>
<p>First thing Monday morning I run:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl report</div></div>
<p>This prints a report with two sections.  The first section lists tasks that currently have the &#8216;week&#8217; tag with a line through the task ID if it is completed.  This gives me a nice summary of what I planned on accomplishing the previous week and how I did.  The second section lists all of my tasks currently visible in <a href="http://hiveminder.com/">Hiveminder</a>.  I hide tasks that I know I&#8217;m not going to work on in the next few weeks so this list is usually no more than 20 or 30 items.</p>
<p><img src="http://thegrebs.com/~michael/tasks/report.png" height="260" width="334" alt="Sample report Image"/></p>
<p>I take this report into the Monday morning meeting with me.  During the meeting, I&#8217;ll glance over this list and select items for the upcoming week.  I also use this page to take notes on during the meeting, writing down any new tasks that come up in the meeting.</p>
<p>After the meeting, I add any new tasks generated in the meeting that I won&#8217;t be working on this week to <a href="http://hiveminder.com/">Hiveminder</a>.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ todo.pl braindump</div></div>
<p><tt>todo.pl</tt> comes from <a href="http://search.cpan.org/~alexmv/App-Todo-0.97/bin/todo.pl">App::Todo</a>, a command line <a href="http://hiveminder.com/">Hiveminder</a> interface.  The braindump command launches $EDITOR where I add new tasks, one per line.  The <a href="http://hiveminder.com/help/reference/tasklists/braindump.html">braindump syntax</a> allows for specifying tags, setting priorities, and other things as well.</p>
<p>Next, I prepare the task list for the upcoming week:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl edit<br />
Carry over the following tasks?<br />
bring about world peace (y or n) [default y] y<br />
write some awesome pre<br />
do some other cool stuff<br />
create practical cold fusion (y or n) [default y] n<br />
return library book</div></div>
<p>The <tt>edit</tt> command iterates over each task tagged with &#8216;week&#8217; if  the task is not marked completed. It prompts whether or not I wish to carry the task over to this week (leave the tag). Any tasks marked completed have the tag removed automatically.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl add<br />
Created:<br />
&nbsp; &nbsp; &nbsp; &nbsp; #YRVK write an awesome report for Tom [week dev]<br />
&nbsp; &nbsp; &nbsp; &nbsp; #YRVL test some new stuff for deployment [week admin]</div></div>
<p>The <tt>add</tt> command works the same as todo.pl&#8217;s braindump command except the &#8216;week&#8217; tag is automatically applied to the newly created tasks.  The full braindump syntax is available for specifying other properties of the tasks.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl update https://path.to.trac/wiki/Tasks/2010-03-15<br />
Sup dawg, I heard you like tasks so I did ur shit for you</div></div>
<p>The <tt>update</tt> command grabs my tasks tagged with &#8216;week&#8217; and formats them one per line started with &#8216; * &#8216;, a wiki bullet list.  It grabs the current wiki page, finds my heading, substitutes the formatted task list under the heading, and submits the change.  It also stores the path given in the YAML config file.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$week.pl go</div></div>
<p>This opens the stored URL for this week&#8217;s tasks wiki page in my default browser, allowing me to confirm week.pl did what it&#8217;s supposed to.</p>
<p>Later in the week once I&#8217;ve done something:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl done tom<br />
#YH7T bring about world peace [dev week]<br />
#YRVL test some new stuff for deployment [week admin]<br />
[DONE] #YRVK write an awesome report for Tom [week dev]</div></div>
<p>This retrieves the task(s) tagged &#8216;week&#8217; that are not marked completed containing the given string.  If there was only one match, the script marks it as done and then outputs the current state of tasks tagged &#8216;week&#8217;.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ week.pl update<br />
Sup dawg, I heard you like tasks so I did ur shit for you</div></div>
<p>Same as <tt>update</tt> before, except when no URL is given, the URL is read from the configuration file.  This way I only need to worry about the URL once per week, the first time I update for the week.</p>
<h3>Conclusion</h3>
<p>So there you have it.  If you are also using <a href="http://hiveminder.com/">Hiveminder</a>, maybe aspects of my work flow will make sense for you and pieces of the Perl script may be useful.  If you aren&#8217;t using <a href="http://hiveminder.com/">Hiveminder</a>, maybe you will be inspired to check it out.  I use michael@thegrebs.com on <a href="http://hiveminder.com/">Hiveminder</a> in case you feel the need to assign me a task or wish to gift me another year of Hiveminder Pro ;)</p>
<p><a href="http://thegrebs.com/~michael/tasks/week.txt">week.pl</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2010/03/13/task-management-with-hiveminder-and-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebService::MobileMe uploaded to the CPAN</title>
		<link>http://michael.thegrebs.com/2009/07/26/webservicemobileme-uploaded-to-the-cpan/</link>
		<comments>http://michael.thegrebs.com/2009/07/26/webservicemobileme-uploaded-to-the-cpan/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 23:06:23 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobileme]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=232</guid>
		<description><![CDATA[Just a quick post to announce a new perl module I uploaded to the CPAN the other day. It&#8217;s still to be considered alpha quality as it is lacking error checking and other such necessary stuffs but is working for &#8230; <a href="http://michael.thegrebs.com/2009/07/26/webservicemobileme-uploaded-to-the-cpan/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to announce a new perl module I uploaded to the CPAN the other day.  It&#8217;s still to be considered alpha quality as it is lacking error checking and other such necessary stuffs but is working for me.</p>
<p>Usage looks like:</p>
<div class="codecolorer-container perl vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="perl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">use</span> WebService<span style="color: #339933;">::</span><span style="color: #006600;">MobileMe</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$mme</span> <span style="color: #339933;">=</span> WebService<span style="color: #339933;">::</span><span style="color: #006600;">MobileMe</span><span style="color: #339933;">-&gt;</span><span style="color: #000000; font-weight: bold;">new</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; username <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'yaakov'</span><span style="color: #339933;">,</span> password <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'HUGELOVE'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$location</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$mme</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">locate</span><span style="color: #339933;">;</span><br />
<span style="color: #000066;">print</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">&lt;</span><span style="color: #ff0000;">&quot;EOT&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; As of <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>date<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #000066;">time</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> Yaakov was at<br />
&nbsp; &nbsp; <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>latitude<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>longitude<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#40;</span>plus <span style="color: #b1b100;">or</span> minus<br />
&nbsp; &nbsp; <span style="color: #0000ff;">$location</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>accuracy<span style="color: #009900;">&#125;</span> meters<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><br />
EOT<br />
<span style="color: #0000ff;">$mme</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">sendMessage</span><span style="color: #009900;">&#40;</span> message <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'Hi Yaakov!'</span><span style="color: #339933;">,</span> <span style="color: #000066;">alarm</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>The online documentation is available via <a href="http://search.cpan.org/~mikegrb/WebService-MobileMe/lib/WebService/MobileMe.pm">search.cpan.org</a>.</p>
<p>Git Web: <a href="http://git.thegrebs.com/?p=WebService-MobileMe">http://git.thegrebs.com/?p=WebService-MobileMe</a><br />
Git Clone: http://git.thegrebs.com/git/WebService-MobileMe</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2009/07/26/webservicemobileme-uploaded-to-the-cpan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YAPC&#124;10</title>
		<link>http://michael.thegrebs.com/2009/06/01/yapc10/</link>
		<comments>http://michael.thegrebs.com/2009/06/01/yapc10/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 17:53:44 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[yapc]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=227</guid>
		<description><![CDATA[I will be at YAPC&#124;10 in Pittsburgh the end of June. Here&#8217;s a schedule of the talks I plan to attend. There are a few holes not because the talks at those time suck but because they rock so hard &#8230; <a href="http://michael.thegrebs.com/2009/06/01/yapc10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I will be at <a href="http://yapc10.org/yn2009/">YAPC|10</a> in Pittsburgh the end of June.  Here&#8217;s a schedule of the talks I plan to attend.  There are a few holes not because the talks at those time suck but because they rock so hard I can&#8217;t decide which I want to attend.</p>
<p><iframe src="https://www.google.com/calendar/hosted/thegrebs.com/embed?mode=AGENDA&amp;height=600&amp;wkst=1&amp;bgcolor=%23FFFFFF&amp;src=thegrebs.com_hoqmg0gv7oikpa0op34pjbm5tg%40group.calendar.google.com&amp;color=%23B1440E&amp;ctz=America%2FNew_York" style=" border:solid 1px #777 " width="500" height="600" frameborder="0" scrolling="no"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2009/06/01/yapc10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>~/.bashrc Perl Module Version Tip</title>
		<link>http://michael.thegrebs.com/2009/01/09/bashrc-perl-module-version-tip/</link>
		<comments>http://michael.thegrebs.com/2009/01/09/bashrc-perl-module-version-tip/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 16:41:12 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=189</guid>
		<description><![CDATA[I often need to quickly check the version of a perl module currently installed. A while back I got tired of running: $ perl -MPOE::Filter -E 'say $POE::Filter::VERSION' 1.2357 So I added a quick function to .bashrc: pm-vers &#40;&#41; &#123; &#8230; <a href="http://michael.thegrebs.com/2009/01/09/bashrc-perl-module-version-tip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I often need to quickly check the version of a perl module currently installed.  A while back I got tired of running:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ perl -MPOE::Filter -E 'say $POE::Filter::VERSION'<br />
1.2357</div></div>
<p>So I added a quick function to .bashrc:</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">pm-vers <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #c20cb9; font-weight: bold;">perl</span> -M<span style="color: #007800;">$1</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;print <span style="color: #000099; font-weight: bold;">\$</span>$1::VERSION, <span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span></div></div>
<p>Now I just run:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ pm-vers POE::Filter<br />
1.2357</div></div>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2009/01/09/bashrc-perl-module-version-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geeky Weather Station Stuffs</title>
		<link>http://michael.thegrebs.com/2008/12/21/geeky-weather-station-stuffs/</link>
		<comments>http://michael.thegrebs.com/2008/12/21/geeky-weather-station-stuffs/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 03:08:55 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[weather]]></category>
		<category><![CDATA[wxperl]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=141</guid>
		<description><![CDATA[http://weather.thegrebs.com/ I recently received a nice Honeywell weather station. It turns out they are actually manufactured by a company called Irox which also sells stations under it&#8217;s own name but they seem to be more popular in Europe. Being a &#8230; <a href="http://michael.thegrebs.com/2008/12/21/geeky-weather-station-stuffs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://michael.thegrebs.com/wp-content/uploads/2008/12/wxperl.png" alt="wxperl" title="wxperl" width="200" height="385" class="alignright size-full wp-image-176" /><br />
<a href="http://weather.thegrebs.com/">http://weather.thegrebs.com/</a></p>
<p>I recently received a nice Honeywell weather station.  It turns out they are actually manufactured by a company called Irox which also sells stations under it&#8217;s own name but they seem to be more popular in Europe.  Being a geek, one of the first things I did was check out Linux or OS X support.  Unfortunately only one piece of software supports this weather station under Linux, <a href="http://www.weather-display.com/index.php">Weather Display</a>.  There Linux software is freeware but not open source and leaves quite a bit to be desired but at least it would talk to the weather station and collect data from it.</p>
<p>With a bit of Googling I found <a href="http://saratoga-weather.org/template/index.php">Saratoga Weather</a> which seems to be based on a template from <a href="http://www.carterlake.org/webtemplates.php">Carter Lakes</a>.  Unfortunately the PHP code is a bit of a mess with 43 separate php files all in a top level directory and including each other.  With a bit of work I was able to bend it to my will but every little change was a pain to accomplish.</p>
<p>I started slowly re-implementing things in Perl.  I found an <a href="http://www.tnetweather.com/wd-parser.php">online WD data-file parser</a> which greatly helped in figuring out what the fields in Weather Displays native log files meant.  Fast-forward a couple of weeks and I think things are pretty much done feature wise.  I lack NWS warning/watch/advisory notification, the thermometer image with today&#8217;s information is still PHP generated, and I don&#8217;t yet have a wind graph.  These last few details shouldn&#8217;t take too much work when I get around to it.  I also have a few features the original lacks, graphs, a daily tweet with today&#8217;s high/low, and sane code :p.</p>
<p>The information from my weather station is available online at <a href="http://weather.thegrebs.com/">http://weather.thegrebs.com/</a> and the source is available via git clone from http://git.thegrebs.com/git/wxperl.  You may also browse the repo via Git Web at <a href="http://git.thegrebs.com/?p=wxperl">http://git.thegrebs.com/?p=wxperl</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2008/12/21/geeky-weather-station-stuffs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>dh-make-perl will rock your socks</title>
		<link>http://michael.thegrebs.com/2008/07/02/dh-make-perl-will-rock-your-socks/</link>
		<comments>http://michael.thegrebs.com/2008/07/02/dh-make-perl-will-rock-your-socks/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 19:38:04 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=123</guid>
		<description><![CDATA[dh-make-perl is the most awesome Debian package /ever/. dh-make-perl --cpan Some::Module --build sudo dpkg -i libsome-module-0.1-1_all.deb Done. Dependencies If you have apt-file installed and Some::Module requires Lib::Foo for which a Debian package is available, the dependancy will automatically be created. &#8230; <a href="http://michael.thegrebs.com/2008/07/02/dh-make-perl-will-rock-your-socks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">dh-make-perl</div></div>
<p>is the most awesome Debian package /ever/.</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">dh-make-perl --cpan Some::Module --build<br />
sudo dpkg -i libsome-module-0.1-1_all.deb</div></div>
<p>Done.</p>
<p><strong>Dependencies</strong></p>
<p>If you have</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">apt-file</div></div>
<p>installed and Some::Module requires Lib::Foo for which a Debian package is available, the dependancy will automatically be created.  If Lib::Foo does not have a Debian package already available, you will likely  need to manually run</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">dh-make-perl</div></div>
<p>on Lib::Foo first.</p>
<p>I haven&#8217;t seen the</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">apt-file</div></div>
<p>trick mentioned elsewhere.  Honestly when someone mentioned it on IRC I didn&#8217;t believe him.  Sure enough, looking at the source for</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">dh-make-per</div></div>
<p>l revealed that it does indeed check apt-file for each module that Some::Module lists as required in the</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">META.yml</div></div>
<p>.</p>
<p><strong>Why?</strong></p>
<p>Now dpkg/apt know that you have Some::Module installed.  If an official package for Some::Module comes out, it will likely have the same name and if it is for a newer version of Some::Module aptitude upgrade will automagically upgrade you to it.  The real win is ease of cleanly uninstalling though. How many times have you found what you thought was the perfect module for task XYZ and installed it.  Only to find that it isn&#8217;t so hot 5 minutes after beginning to use it.  Making sure &#8216;</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">make uninstall</div></div>
<p>&#8216; really uninstalled every thing can be a pain.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2008/07/02/dh-make-perl-will-rock-your-socks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Module::Signature Rocks My Socks</title>
		<link>http://michael.thegrebs.com/2008/06/01/module-signature/</link>
		<comments>http://michael.thegrebs.com/2008/06/01/module-signature/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 01:45:06 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/?p=116</guid>
		<description><![CDATA[Just discovered the perl module Module::Signature by 唐鳳 (Audrey Tang) the other day. It&#8217;s pretty spiffy. Implementing is easy (stolen from the docs): MakeMaker: WriteMakefile( (MM->can('signature_target') ? (SIGN => 1) : ()), # ... original arguments ... ); Module::Build: Module::Build->new( &#8230; <a href="http://michael.thegrebs.com/2008/06/01/module-signature/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Just discovered the perl module <a href="http://search.cpan.org/~audreyt/Module-Signature/">Module::Signature</a> by 唐鳳 (Audrey Tang) the other day.  It&#8217;s pretty spiffy.</p>
<p>Implementing is easy (stolen from the docs):</p>
<p>MakeMaker:</p>
<pre>    WriteMakefile(
        (MM->can('signature_target') ? (SIGN => 1) : ()),
        # ... original arguments ...
    );</pre>
<p>Module::Build:</p>
<pre>   Module::Build->new(
        (sign => 1),
        # ... original arguments ...
    )->create_build_script;</pre>
<p>Don&#8217;t forget to add</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SIGNATURE</div></div>
<p>to your</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">MANIFEST</div></div>
<p>if needed.</p>
<p>Then when running</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">make dist</div></div>
<p>you will be prompted for the pass phrase for your gpg key.  For extra goodness, add <a href="http://search.cpan.org/src/AUDREYT/Module-Signature-0.55/t/0-signature.t">0-signature.t</a> to your tests.  It includes a single test that verifies the package cryptographically during</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">make test</div></div>
<p>if the</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">TEST_SIGNATURE</div></div>
<p>environment variable is set.</p>
<p>If you know waltman and haven&#8217;t heard of this module, yell at him for not telling you about it, he&#8217;s mentioned in the</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AUTHORS</div></div>
<p>file for his stellar documentation patches.</p>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2008/06/01/module-signature/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adding a Datastore to an RRD File</title>
		<link>http://michael.thegrebs.com/2007/12/30/adding-a-datastore-to-an-rrd-file/</link>
		<comments>http://michael.thegrebs.com/2007/12/30/adding-a-datastore-to-an-rrd-file/#comments</comments>
		<pubDate>Sun, 30 Dec 2007 18:17:13 +0000</pubDate>
		<dc:creator>mikegrb</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[neat]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[rrd]]></category>

		<guid isPermaLink="false">http://michael.thegrebs.com/2007/12/30/adding-a-datastore-to-an-rrd-file/</guid>
		<description><![CDATA[Mainly for personal future reference. Adding a DS to a bunch of RRD files is a big pain, RRD doesn&#8217;t have any sort of native mechanism for doing this. The usual procedure is exporting the RRD data to XML, creating &#8230; <a href="http://michael.thegrebs.com/2007/12/30/adding-a-datastore-to-an-rrd-file/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mainly for personal future reference.</p>
<p>Adding a DS to a bunch of RRD files is a big pain,  RRD doesn&#8217;t have any sort of native mechanism for doing this.  The usual procedure is exporting the RRD data to XML, creating a new rrd file with the old datastores plus your new ones, then importing the data back in from the XML.</p>
<p>A while back I needed to do this for a load of RRDs so I wrote a quick and dirty bash script for it.  Today I had reason to add a DS again but couldn&#8217;t find my script.  A bit of googling was no help either, surely other people have this problem too?  I discovered Nicola Worthington&#8217;s <a href="http://search.cpan.org/~nicolaw/RRD-Simple/lib/RRD/Simple.pm">RRD::Simple</a> contains add_source method so a few moments in <a href="http://macromates.com/">TextMate</a> later we have:</p>
<pre class="textmate-source black_pearl"><span class="source source_perl"></span><span class="meta meta_comment meta_comment_full-line meta_comment_full-line_perl"></span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_perl"></span><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_perl">#</span>!/usr/bin/perl

<span class="keyword keyword_control keyword_control_perl">use</span> strict;
<span class="keyword keyword_control keyword_control_perl">use</span> warnings;

<span class="keyword keyword_control keyword_control_perl">use</span> RRD::Simple();

<span class="storage storage_modifier storage_modifier_perl">my</span> <span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">$</span>rrd_path = <span class="string string_quoted string_quoted_double string_quoted_double_perl"></span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_perl">"</span>/path/to/dir/of/rrds/<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_perl">"</span>;
<span class="storage storage_modifier storage_modifier_perl">my</span> <span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">@</span>rrd_files = &lt;<span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">$</span>rrd_path/*.rrd&gt;;

<span class="storage storage_modifier storage_modifier_perl">my</span> <span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">$</span>rrd = RRD::Simple<span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_perl">-&gt;</span>new();

<span class="keyword keyword_control keyword_control_perl">for</span> <span class="storage storage_modifier storage_modifier_perl">my</span> <span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">$</span>file (<span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">@</span>rrd_files) {
<span class="meta meta_leading-tabs"></span><span class="meta meta_odd-tab">    </span><span class="support support_function support_function_perl">print</span> <span class="string string_quoted string_quoted_double string_quoted_double_perl"></span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_perl">"</span>Processing <span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">$</span>file...<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_perl">"</span>;
<span class="meta meta_leading-tabs"></span><span class="meta meta_odd-tab">    </span><span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">$</span>rrd<span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_perl">-&gt;</span>add_source(<span class="variable variable_other variable_other_readwrite variable_other_readwrite_global variable_other_readwrite_global_perl"></span><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_perl">$</span>file, <span class="string string_quoted string_quoted_single string_quoted_single_perl"></span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_perl">'</span>DS_name<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_perl">'</span><span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_perl"> =&gt;</span> <span class="string string_quoted string_quoted_single string_quoted_single_perl"></span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_perl">'</span>DERIVE<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_perl">'</span>);
<span class="meta meta_leading-tabs"></span><span class="meta meta_odd-tab">    </span><span class="support support_function support_function_perl">print</span> <span class="string string_quoted string_quoted_double string_quoted_double_perl"></span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_perl">"</span> ok.<span class="constant constant_character constant_character_escape constant_character_escape_perl">\n</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_perl">"</span>;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://michael.thegrebs.com/2007/12/30/adding-a-datastore-to-an-rrd-file/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

