<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/voltar.xsl"?>

<page>
<title>Perl Modules</title>
<folder title="My Perl Modules"><p>These are the perl modules I've written over the years.  Some unpublished, others published.  Many are buggy, some are not.  If I'm intending for others to use the modules, then I almost certainly published them here also:
                   <a href='http://search.cpan.org/~jettero/'>http://search.cpan.org/~jettero/</a></p><p>In fact, I'd be rather surprised if anyone really looked at this page that didn't come to my site for some other reason.</p><p>They're also mostly all on <a href='http://github.com/jettero'>github</a>, if you'd like to check out a copy.</p></folder><folder nosig='1' nlink="Statistics-Basic" date="Mon Jun 29 07:00:41 2009" title="Statistics::Basic">
<p> Essentially, I wanted a set of perl native packages that would do very basic statistics. That package (<a href="?eo_cat=Statistics-Basic-Statistics-Basic.html">Statistics::Basic</a>) is located here: <a href="Statistics-Basic-1.6600.tar.gz">Statistics-Basic-1.6600.tar.gz</a>. It contains things like ::Mean, ::StdDev, ::Covariance, etc. </p><p>Changes:<br /><pre>1.6600: Sun Jun 28 2009
    - new test: create each object in its empty state, make sure
      its really empty.
    - added an importer interface for the %ENV vars
    - removing the ENV vars (except for pre-compile init)
    - finished updating the pods for all the 1.66 changes
 
 1.6600: Sat Jun 27 2009
    - worked on computed vectors a little.  decided it should be
      possible to insert into them, instead inserting into the
      input_vector.
    - finished a lot more 1.66 docs
    - since two vectors remain separate objects under
      $v1-&#62;set_vector($v2), they shouldn&#39;t be linked together from
      that -- set_vector now copies instead of linking.
      computed() vectors can serve that role instead.
    - made sure all the object accessors return the object
    - made set_vector() take nonscalars like all the export
      constructors
    - made the export constructors use the new set_vector() via
      new()
    - made all the objects true in bool context
 
 1.6600: Wed Jun 24 2009
    - _OVBed: median, StdDev, Variance
    - fixed bugs resulting from the above
    - made quite a lot of the methods of Vectors private
    - trying to make the pods more consistent and informative
    - renamed size() as query_size() to be really consistent --
      but put in an undocumented alias named size() ... maybe
      deprecate later.
    - renamed ginsert() append(), but left ginsert() operational,
      with no real chance of deprecation later
 
</pre></p>
</folder>
<folder nosig='1' nlink="Date-Lima" date="Fri Jun 26 15:58:26 2009" title="Date::Lima">
<p> Nichus and I wrote this one for our network monitoring scripts. It turns 7654321 seconds into 12w4d14h12m1s. <a href="Date-Lima-1.4100.tar.gz">Date-Lima-1.4100.tar.gz</a> / <a href="?eo_cat=Date-Lima-Date-Lima.html">Date::Lima</a>. </p><p> This module now works under the name <a href="?eo_cat=Date-Lima-Time-DeltaString.html">Time::DeltaString</a> — arguably a better name in every way. </p><p>Changes:<br /><pre>1.4100: Fri Jun 26 15:16:35 EDT 2009
    - added a readme
 
 1.4: Fri Jun 26 12:34:01 EDT 2009
    - I might just release this with both namespaces... we&#39;ll see.
 
 1.3: Tue Aug 12 07:19:17 EDT 2008
    - I modernized this greatly
 
</pre></p>
</folder>
<folder nosig='1' nlink="Net-Pcap-Easy" date="Fri Jun 26 07:29:41 2009" title="Net::Pcap::Easy">
<p> Net::Pcap does the job, but it&#39;s confusing and difficult to operate. This module solves that problem in a relatively general way. </p><p> I wanted an way to build libpcap filters really quickly. It shouldn&#39;t take two hours to crank one out, particularly since I imagine they all kinda look the same. So, I wrote this to simplify writing sniffers really quickly. </p><p> Here it is: <a href="Net-Pcap-Easy-1.4000.tar.gz">Net-Pcap-Easy-1.4000.tar.gz</a> Read it: <a href="?eo_cat=Net-Pcap-Easy-Net-Pcap-Easy.html">Net::Pcap::Easy</a>. </p><p>Changes:<br /><pre>1.4000: Thu Jun 25 16:00:00 EDT 2009
    - made {pcap} and {netmask} into accessor functions (get_pcap,
      etc) and altered pods
    - got the pods to pass t/pod.t
    - t/pod_coverage.t passes
    - got t/critic.t to pass
    - renamed and moved a few things.
    - to avoid the fact that loop() returns true forever at the
      end of a packetfile, I&#39;ve made loop() instead return the
      number of processed packets (in cases where there was no
      error) -- and undef or () when there was an error.
    - added the new dev=&#62;&#34;file:lo.data&#34; format to the pod
    - added the dev=&#62;&#34;file:lo.data&#34; test (t/31_)
    - added the dev=&#62;&#34;file:eth0.data&#34; test (t/31_)
 
 1.325: Thu Jun 25 08:41:37 EDT 2009
    - adding patch from andk
    - made sure this works under 5.6.1
 
 1.325: Fri Mar 27 18:28:59 EDT 2009
    - gah, bug in the Makefile.PL, noticed it when I installed on
      my new server.
 
</pre></p>
</folder>
<folder nosig='1' nlink="" date="Sun Jun 21 08:14:59 2009" title="">
<p> A friend of mine has a MythBuntu box, a Hauppauge HD PVR 1212, and few of the linux skills necessary to make that work really well since it isn&#39;t yet supported by the mythtv team. </p><p> Consequently, I suggested perl (because I know it really well) and github (because it&#39;s super fun): <a href="http://github.com/jettero/videodump-pl">github/jettero/videodump-pl</a></p><p> Here&#39;s the cpan-package as it exists presently (ie, not ready for cpan at all): <a href="videodump-pl-1.67.tar.gz">videodump-pl-1.67.tar.gz</a></p><p> Here&#39;s the man page: <a href="?eo_cat=videodump-pl-Videodump-PL.html">Videodump-PL</a>. </p>
</folder>
<folder nosig='1' nlink="Net-IMAP-Simple" date="Sun Jun 21 08:02:38 2009" title="Net::IMAP::Simple">
<p> Hooray! I got maintainership <a href="?eo_cat=Net-IMAP-Simple-Net-IMAP-Simple.html">Net::IMAP::Simple</a>! </p><p><a href="Net-IMAP-Simple-1.1899_07.tar.gz">Net-IMAP-Simple-1.1899_07.tar.gz</a></p><p>Changes:<br /><pre>1.1899_07: Sun Jun 21 07:16:36 EDT 2009
    - I decided to do get() my way, without ruining everything, by
      blessing the arrayref and overloading &#39;&#34;&#34;&#39;.
    - I tought the t/35 test to prove that _process_command fails
      just as Jonathan Kamens says.
    - applied JIK&#39;s patch.
 
 1.1899_07: Sat Jun 20 22:12:00 EDT 2009
    - I want to change the way get() works.  I don&#39;t think I
      should, but I&#39;d like to return the actual message in scalar
      context and the lines in list context.  Returning the lines
      as an arrayref makes no sense to me.
 
 1.1899_07: Sat Jun 20 15:26:13 EDT 2009
    - while trying to get some delete and copy tests I ended up
      working on expunge_mailbox() a little
    - found another bug in Net::IMAP::Server::Mailbox... It&#39;s
      clearly just a demo, but since I&#39;m using it for my tests,
      it&#39;s worth fixing.
    - my delete tests do show that ranges like 3:5 really do work,
      which makes me think RT#40203 may turn out to be spurious.
      I&#39;ll let the tests prove it out before I close it though.
    - I refactored the _reselect() stuff away, it was poorly
      thought out.  There&#39;s a _clear_cache() instead.  Yeah, 40203
      appears to be bogus because the client doesn&#39;t really parse
      the sequence-set numbers.  I have confirmed for sure that
      you can $imap-&#62;delete(&#34;3:5,7,10&#34;) and it&#39;ll work just like
      you called delete 5 times.
    - Copies seem to work fine too.  I&#39;m going to close the
      ticket.
    - Documented the sequence set stuff so RT#40203 doesn&#39;t come
      up again.
 
</pre></p>
</folder>
<folder nosig='1' nlink="Term-ANSIColorx-ColorNicknames" date="Fri May 22 09:16:35 2009" title="Term::ANSIColorx::ColorNicknames">
<p> I&#39;ve been using a tool for years that I find so handy that I can&#39;t believe nobody else has done it. Or, perhaps they have. Everyone&#39;s been rolling their own shell until <a href="http://search.cpan.org/perldoc?Devel::REPL">Devel::REPL</a> came along. I still haven&#39;t made the adjustment to it... I will. My shell has worked so well for so long though. </p><p> Anyway, <a href="?eo_cat=Term-ANSIColorx-ColorNicknames-hi.html">this tool (called hi, for highlight)</a> is a little like grep except it doesn&#39;t limit the output coming though. It&#39;s just colorizes things. It comes packaged with a couple modules (<a href="?eo_cat=Term-ANSIColorx-ColorNicknames-Term-ANSIColorx-ColorNicknames.html">Term::ANSIColorx::ColorNicknames</a> and <a href="?eo_cat=Term-ANSIColorx-ColorNicknames-Term-ANSIColorx-AutoFilterFH.html">Term::ANSIColorx::AutoFilterFH</a>) and the tool itself is an optional (default: no) install. </p><p><a href="Term-ANSIColorx-ColorNicknames-2.7183.tar.gz">Term-ANSIColorx-ColorNicknames-2.7183.tar.gz</a>. </p><p>Changes:<br /><pre>2.7183: Fri May 22 09:14:55 EDT 2009
    - docbug
 
 2.71828: Mon May  4 06:13:52 EDT 2009
    - my dev was against a very old version of Term::ANSIColor
    - fixed bugs
    - fixed tests
 
 2.7182: Fri May  1 16:47:19 EDT 2009
    - added a README
 
</pre></p>
</folder>
<folder nosig='1' nlink="Math-Units-PhysicalValue" date="Fri May 15 07:20:43 2009" title="Math::Units::PhysicalValue">
<p> Math::Units did <em>almost</em> what I wanted. I really wanted something like Math::Calc::Units -- which felt unfinished, and hadn&#39;t been updated for years. This (<a href="Math-Units-PhysicalValue-1.0007.tar.gz">Math-Units-PhysicalValue-1.0007.tar.gz</a>) is something I wrote for dividing things like &#34;6,500 ft&#34; and &#34;43 s&#34; and getting &#34;103.16 miles/hour&#34;. This module uses Math::Units and Math::Algebra::Symbols to do all it&#39;s magic. Really, PhysicalValue is just a collection of clever operator overloads. Check out the man page: <a href="?eo_cat=Math-Units-PhysicalValue-Math-Units-PhysicalValue.html">Math::Units::PhysicalValue module</a>. </p><p>Changes:<br /><pre>1.007: Fri May 15 07:19:12 EDT 2009
    - Math::Round apparently started detecting overflows...  I was unaware of
      them myself -- so that seems like a very good thing.
 
 1.005: Tue Mar 31 11:18:27 EDT 2009
    - Failed to account for the fact that splitting out PV::AU
      would necessitate versioning the file... *sigh*
 
 1.001: Tue Mar 31 09:30:54 EDT 2009
    - This is pretty mature and has worked well for me for years. 1.0
    - added chorny&#39;s META.yml stuff
    - added pv to the list of exports PV() is good, pv() is
      easier.
    - split the auto units module
    - split the pod
 
</pre></p>
</folder>
<folder nosig='1' nlink="App-MrShell" date="Tue May 12 10:41:27 2009" title="App::MrShell">
<p> I&#39;ve decided to resurrect this old project from my college years. Back in the olden days, one of my teachers (not a professor, a Phd Student) by the name of Roger Zanny, needed a tool to start up his parallel processing applications concurrently over ssh. </p><p> He assigned it as a project for the class ... but I took it a step further and used it at work. We had like fifty identical machines, so it was perfect for setting clocks and installing updates and things. </p><p> I abandoned the project entirely when I nolonger had a need for it. Lately though, I&#39;ve got like thirty crapy servers that are all identical ... </p><p> I wonder what google uses. <a href="?eo_cat=App-MrShell-mrsh.html">mrsh</a> is what I use, the guts of which are in this module: <a href="?eo_cat=App-MrShell-App-MrShell.html">App::MrShell</a>. </p><p><a href="App-MrShell-2.0203.tar.gz">App-MrShell-2.0203.tar.gz</a></p><p>Changes:<br /><pre>2.0203: Tue May 12 10:36:26 EDT 2009
    - added a way to subtract hosts from the host list
 
 2.0201: Sat May  9 08:32:25 EDT 2009
    - why show the command number in the output?
 
 2.0200: Fri May  8 17:24:06 EDT 2009
    - added the conditional argument processing and username
      splitting for non-routed cases
    - added an experimental recursive group replacer, so @all =
      @dt @us will work
    - improved group arg processing, requires further testing and
      documentation
 
</pre></p>
</folder>
<folder nosig='1' nlink="Crypt-PBC" date="Wed May  6 16:08:45 2009" title="Crypt::PBC">
Ben Lynn&#39;s PBC library is really fun: <a href="http://crypto.stanford.edu/pbc/">http://crypto.stanford.edu/pbc/</a>. But I&#39;m a perl nerd at heart, so I ported it to perl. He&#39;s actively working on his library, so I expect to have to update this module relatively regularly. File: <a href="Crypt-PBC-0.855.tar.gz">Crypt-PBC-0.855.tar.gz</a> Man Page: <a href="?eo_cat=Crypt-PBC-Crypt-PBC.html">Crypt::PBC</a>. <p>Changes:<br /><pre>0.855: Fri Mar 27 18:42:50 EDT 2009
    - added chrony&#39;s meta.yml stuff for the github repo
 
 0.854: Thu Aug 21 06:21:28 EDT 2008
    - Used EU::MM&#39;s prompt() instead of rolling my own.  BingOS++.
      Woops.
 
 0.853: Thu Aug 14 12:05:26 EDT 2008
    - Fixed a build problem for bsd 
    - Fixed an eval { use Something } problem in a test.
      It now reads eval q{ use something };  ... grrz.
 
</pre></p>
</folder>
<folder nosig='1' nlink="MySQL-Easy" date="Wed May  6 11:43:55 2009" title="MySQL::Easy">
<p> This (<a href="MySQL-Easy-2.1001.tar.gz">MySQL-Easy-2.1001.tar.gz</a>) is something I&#39;ve been using over and over. I don&#39;t remember how I used to live without it. I had quit publishing this on CPAN for a while, but I decided to put it back after soneome asked about it. I have gotten grief about the namespace previously, but moving it into DBIx didn&#39;t work out. </p><p>Check out the man page: <a href="?eo_cat=MySQL-Easy-MySQL-Easy.html">MySQL::Easy</a>. </p><p>Changes:<br /><pre>2.1001: Wed May  6 07:22:23 EDT 2009
    - the only place the tests actually run (my house)
      ... they weren&#39;t being run.
 
 2.1000: Wed May  6 07:22:23 EDT 2009
    - I cleaned up the pod a lot
    - modernized the makefile
    - fixed various mundane things
    - got rid of version.pm (cursed object)
 
 2.0.4: Mon Jun  9 20:55:50 EDT 2008
    - added a smarter last_insert_id
 
</pre></p>
</folder>
<folder nosig='1' nlink="Object-Previous" date="Sun May  3 19:00:23 2009" title="Object::Previous">
<p> I&#39;ve been wishing for a long time that perl had a previous_object() function like Pike. They showed me how on perlmonks.org... So I wipped this together quick. Here it is: <a href="Object-Previous-1.1007.tar.gz">Object-Previous-1.1007.tar.gz</a> Read it: <a href="?eo_cat=Object-Previous-Object-Previous.html">Object::Previous</a>. </p><p>Changes:<br /><pre>1.2: Sun May  3 18:33:49 EDT 2009
    - doc updates, dist updates, etc
 
 1.1: Wed Oct 29 08:33:39 EDT 2008
    - roflmao: I quit using version.pm but left it in the pm
 
 1.1: Thu Aug  7 15:49:49 EDT 2008
     - version.pm is incompatible with EU::MM and
     - removed the Autoloader from the .pm
 
</pre></p>
</folder>
<folder nosig='1' nlink="" date="Sun May  3 17:23:41 2009" title="">
<p> I needed a tool that would let me stuff several git repos into one svn repo so I could browse the source from five logically independant projects in one logically unified <a href="http://trac.edgewall.org/">trac</a> wiki. </p><p>This project will replay a git repo into svn and will automatically keep track of which commits have been replayed and not. It uses mainly native svn and git commands to do this (so both must be installed). It carefully preserves the dates and commit log entries into svn (again, using native svn commands to do so). </p><p><a href="Git-SVNReplay-1.0211.tar.gz">git-svn-replay 1.0211 (tgz)</a>, <a href="?eo_cat=Git-SVNReplay-git-svn-replay.html">git-svn-replay (pod)</a></p><p>Changes:<br /><pre>1.0211: Sun May  3 17:22:29 EDT 2009
    - fixed a bunch of bad assumptions in the tests.
 
 1.0210: Mon Apr 27 21:46:06 EDT 2009
    - fixed vile bugs in the .pm -- they were obviated by changes to T::GF
 
 1.0200: Sat Apr 25 21:34:30 EDT 2009
    - if no arguments and no dir to cd into, just show the help
    - replaced all croaks (misleading/meaningless) with meaninful and not
      misleading edie
    - fixed a git-repo-assumption, namely, relative path git repos won&#39;t be
      where you&#39;d think once you cd into the svn.co
    - fixed a bad format bug
 
</pre></p>
</folder>
<folder nosig='1' nlink="Term-GentooFunctions" date="Thu Apr 30 07:12:40 2009" title="Term::GentooFunctions">
<p> The gentoo /sbin/functions.sh suite is really nice for shell scripts. I wanted some of that functionality for perl. Here it is: <a href="Term-GentooFunctions-1.3505.tar.gz">Term-GentooFunctions-1.3505.tar.gz</a>, <a href="?eo_cat=Term-GentooFunctions-Term-GentooFunctions.html">Term::GentooFunctions (pod)</a>. </p><p>Changes:<br /><pre>1.3505: Thu Apr 30 07:11:23 EDT 2009
    - altered wash() a little, to allow \n&#39;s in the middle of messages
 
 1.3501: Mon Apr 27 21:41:53 EDT 2009
    - added another test... mystified by errors in git-svn-replay
 
 1.3501: Sun Apr 26 22:47:09 EDT 2009
    - fixed bug shown in t/09 
 
</pre></p>
</folder>
<folder nosig='1' nlink="GD-Graph-ohlc" date="Mon Apr 27 09:36:25 2009" title="GD::Graph::ohlc">
<p> Because I was doing a bunch of business related data processing recently (<a href="http://groups.google.com/group/stockmonkey/">stockmonkey</a>), I wanted to plot more data per time interval than just one price. I wanted to print Open, High, Close, and Low. There are a few ways to do it (candlesticks, box plots, etc), but I&#39;m partial to the OHLC form. I may yet build candlesticks and boxplots, ... we&#39;ll see ... </p><p> Here it is: <a href="GD-Graph-ohlc-0.9600.tar.gz">GD-Graph-ohlc-0.9600.tar.gz</a></p><p> Read it: <a href="?eo_cat=GD-Graph-ohlc-GD-Graph-ohlc.html">GD::Graph::ohlc</a>, <a href="?eo_cat=GD-Graph-ohlc-GD-Graph-candlesticks.html">GD::Graph::candlesticks</a>, </p><p>Changes:<br /><pre>0.9600: Sun Apr 26 17:56:40 EDT 2009
    - started adding candlesticks
    - added the pod and the pod-example test script
    - got candlesticks working -- seems to work fine in mixed mode too
 
 0.9402: Wed Apr 15 22:05:18 EDT 2009
    - misnamed in the name line of the pod.  Wow.
 
 0.9401: Wed Apr 15 07:29:37 EDT 2009
    - this seems more or less ready to distribute
 
</pre></p>
</folder>
<folder nosig='1' nlink="" date="Sun Apr 26 11:08:32 2009" title="">
<p>I needed a way to get info about a process. I wanted it to work under BSD and Linux. Check out the man page: <a href="">Unix::Process module</a> (<a href="Unix-Process-1.3101.tar.gz">Unix-Process-1.3101.tar.gz</a>). </p><p>Changes:<br /><pre>1.3101: Sat Apr 25 16:15:09 EDT 2009
    - a few tweaks and bug fixes (mostly doc bugs)
    - added new meta.yml stuff
 
 1.31: 
    - I used a perl 5.8 syntax in my Makefile.PL
    - although, I think this should work in perl 5.6
      + hrm, looks like IPC::System::Simple doesn&#39;t work under
        5.6, at some point they started using the &#34;use if WINDOWS&#34;
        syntax, which I think is from later perls.
 
 1.300_000: Tue May 27 12:09:33 EDT 2008
    - The autoloader was kinda crappy
    - There were whitespace bugs
    - I hate M::B and went back to EU::MM
      (so I also ditched version.pm)
 
</pre></p>
</folder>
<folder nosig='1' nlink="" date="Sun Apr 26 10:45:35 2009" title="">
<p> I wanted something that worked like CGI.pm but for RSS. Sadly, nobody completed anything like that before me, so I have attempted to construct it. I know precious little about the format, but I think this is a reasonable attempt. Here it is: <a href="CGI-RSS-0.9600.tar.gz">CGI-RSS-0.9600.tar.gz</a>, <a href="">CGI::RSS</a>. </p><p>Changes:<br /><pre>0.9600: Sat Apr 25 14:08:43 EDT 2009
    - added a begin block to set the timezone to UTC when Date::Manip can&#39;t
      otherwise figure it out.
 
 0.9501: Mon Apr  6 17:17:51 EDT 2009
    - doc bugs
 
 0.95: Mon Apr  6 11:06:15 EDT 2009
    - split the pod to a separate file
    - my rss does not validate...
    - added Date::Manip RFC822 date reformatting
    - taught CGI::RSS to preserve case on tags (involved
      deparse... blech)
    - fixed a bug in finish_rss
    - apparently, to validate, an RSS channel needs a
      description...
 
</pre></p>
</folder>
<folder nosig='1' nlink="GD-Graph-ohlc" date="Wed Apr 15 22:04:24 2009" title="GD::Graph::ohlc">
<p> Because I was doing a bunch of business related data processing recently (<a href="http://groups.google.com/group/stockmonkey/">stockmonkey</a>), I wanted to plot more data per time interval than just one price. I wanted to print Open, High, Close, and Low. There are a few ways to do it (candlesticks, box plots, etc), but I&#39;m partial to the OHLC form. I may yet build candlesticks and boxplots, ... we&#39;ll see ... <br /><br /> Here it is: <a href="GD-Graph-ohlc-0.9401.tar.gz">GD-Graph-ohlc-0.9401.tar.gz</a> Read it: <a href="?eo_cat=ohlc.html">GD::Graph::ohlc</a>. <br /><br />Changes: <pre>0.9401: Wed Apr 15 07:29:37 EDT 2009
   - this seems more or less ready to distribute

0.9401: Wed Apr 15 06:53:15 EDT 2009
   - got this more or less ready to try to use

0.01: Wed Apr 15 05:46:18 EDT 2009
   - skelling this up
</pre></p>
</folder>
<folder nosig='1' nlink="CGI-RSS" date="Mon Apr  6 12:05:08 2009" title="CGI::RSS">
<p> I wanted something that worked like CGI.pm but for RSS. Sadly, nobody completed anything like that before me, so I have attempted to construct it. I know precious little about the format, but I think this is a reasonable attempt. Here it is: <a href="CGI-RSS-0.95.tar.gz">CGI-RSS-0.95.tar.gz</a>, <a href="?eo_cat=RSS.html">CGI::RSS</a>. <br /><br />Changes: <pre>0.95: Mon Apr  6 11:06:15 EDT 2009
   - split the pod to a separate file
   - my rss does not validate...
   - added Date::Manip RFC822 date reformatting
   - taught CGI::RSS to preserve case on tags (involved
     deparse... blech)
   - fixed a bug in finish_rss
   - apparently, to validate, an RSS channel needs a
     description...

0.92: Thu Mar 26 12:00:54 EDT 2009
   - messed up the META.yml

0.91: Thu Mar 26 08:52:39 EDT 2009
   - ditching the lgpl2 gz file for the new meta
   - added chrony&#39;s meta.yml stuff
</pre></p>
</folder>
<folder nosig='1' nlink="CPAN-CachingProxy" date="Wed Apr  1 07:10:06 2009" title="CPAN::CachingProxy">
<p> I had originally posted this project <a href="http://perlmonks.org/?node_id=684733">on perlmonks</a>, where I was encouraged (privately) to post the code as a module on CPAN. I never hesitate to post on CPAN. File: <a href="CPAN-CachingProxy-1.4002.tar.gz">CPAN-CachingProxy-1.4002.tar.gz</a> Man Page: <a href="?eo_cat=CachingProxy.html">CPAN::CachingProxy module</a>. <br /><br />Changes: <pre>1.4002: Wed Apr  1 06:49:50 EDT 2009
   - t/01_mg-new_auto.t is failing on like 10% of the perl5.10s,
     but why?  It makes no sense.  I&#39;ve made it more verbose...
     what else can I do?

1.4001: Tue Mar 24 14:29:58 EDT 2009
   - pulled in chorny&#39;s Makefile.PL
     (http://github.com/chorny/cpan--cachingproxy/tree/master)
   - The new META.yml stuff is really neat.

1.4: Tue Mar 24 11:52:10 EDT 2009
   - RSRCHBOY requested that the $pinfo regexp be converted to a
     package option.  That change has been made.
</pre></p>
</folder>
<folder nosig='1' nlink="Math-Units-PhysicalValue" date="Tue Mar 31 11:19:17 2009" title="Math::Units::PhysicalValue">
<p> Math::Units did <em>almost</em> what I wanted. I really wanted something like Math::Calc::Units -- which felt unfinished, and hadn&#39;t been updated for years. This (<a href="Math-Units-PhysicalValue-1.0005.tar.gz">Math-Units-PhysicalValue-1.0005.tar.gz</a>) is something I wrote for dividing things like &#34;6,500 ft&#34; and &#34;43 s&#34; and getting &#34;103.16 miles/hour&#34;. This module uses Math::Units and Math::Algebra::Symbols to do all it&#39;s magic. Really, PhysicalValue is just a collection of clever operator overloads. Check out the man page: <a href="?eo_cat=PhysicalValue.html">Math::Units::PhysicalValue module</a>. Last updated on Tue Mar 31 11:19:17 EDT 2009 </p>
</folder>
<folder nosig='1' nlink="Games-RolePlaying-MapGen" date="Tue Mar 31 09:18:28 2009" title="Games::RolePlaying::MapGen">
<p> I was particularly thrilled with <a href="http://www.aarg.net/~minam/dungeon.cgi">Jamis Buck&#39;s Dungeon Generator</a>, but I wanted to design something a little more flexible that allowed for export and generation plugins. Although images aren&#39;t the only focus of the module, screenshots sell everything, <a href="vis1.map.png">so I provided this one</a> an <a href="vis2.map.png">this one</a>. I have also provided <a href="vis1.map.xml">XSLT samples</a> of <a href="vis2.map.xml">each of them</a>. It&#39;s quite tittlating don&#39;t you think? <br />There is also a new <a href="?eo_cat=GRMEditor.html">editor</a> that&#39;s worth checking out. <br />File: <a href="Games-RolePlay-MapGen-1.4001.tar.gz">Games-RolePlay-MapGen-1.4001.tar.gz</a><br />Man Page: <a href="?eo_cat=MapGen.html">Games::RolePlaying::MapGen module</a>. <br /><br />Changes: <pre>1.4001: Tue Mar 31 07:59:51 EDT 2009
   - added another keyword and versioned up

1.4: ????
   - added the chorny META.yml stuff

1.4: Fri Aug 29 07:11:55 EDT 2008
   - lost version.pm (not worth it)
   - cleaned up the makefile quite a bit
   - use prompt() instead of  in makefile, to keep from
     causing cpan testers to chase me down with pitchfork
   - taught t/05_export to skip XML tests when broken XML::Simple
     and/or broken XML::SAX are encountered.
</pre></p>
</folder>
<folder nosig='1' nlink="Devel-FindBlessedRefs" date="Tue Mar 31 07:10:14 2009" title="Devel::FindBlessedRefs">
<p> I needed to find all the refs blessed under PackageName. I was told that can&#39;t be done, but with XS, you can pretty much do anything you want. I don&#39;t think this is very efficient, but I only needed it for debugging. Here it is: <a href="Devel-FindBlessedRefs-1.252.tar.gz">Devel-FindBlessedRefs-1.252.tar.gz</a> Read it: <a href="?eo_cat=Blessed.html">Devel::FindBlessedRefs</a>. <br /><br />Changes: <pre>1.252: Wed Mar 25 16:22:38 EDT 2009
   - added chorny&#39;s META.yml stuff

1.251: Sun Oct  5 09:38:38 EDT 2008
   - removed the other SvTYPE() since it&#39;s probably also wrong

1.25: Wed Sep 10 07:01:39 EDT 2008
   - woops: http://perlmonks.org/index.pl?node_id=709036 --
     applies to this code also
</pre></p>
</folder>
<folder nosig='1' nlink="" date="Tue Mar 31 07:00:36 2009" title="">
<p> Back in about 2001, I wanted to build a huge library of Technical Analysis tools for perl. I only built three of them originally. <br />File: <a href="stockmonkey-2.9013.tar.gz">stockmonkey-2.9013.tar.gz</a><br />Man Page: <a href="?eo_cat=StockMonkey.html">StockMonkey Modules</a>. <br /><br />Changes: <pre>2.9013: Tue Mar 31 06:58:51 EDT 2009
   - I just noticed that the reason my versions are screwed up is
     that at some point (circa Jul12 2008) I went down in version
     -- foolishly forgetting about floating point versions. Grrz.

2.13: Mon Mar 30 09:54:57 EDT 2009
   - I changed the way the tests worked.  The rand() calls in the
     tests were making the tests fail fairly rarely, but also
     randomly.  I&#39;m hopeful that the rare circumstances where the
     assumptions in the tests fail ... won&#39;t happen at all with
     pre-generated data.

2.111: Fri Mar 27 18:35:35 EDT 2009
   - added chorny code to the makefile that makes the repo show
     on cpan.
</pre></p>
</folder>
<folder nosig='1' nlink="Crypt-PBC" date="Fri Mar 27 18:50:19 2009" title="Crypt::PBC">
<p> Ben Lynn&#39;s PBC library is really fun: <a href="http://crypto.stanford.edu/pbc/">http://crypto.stanford.edu/pbc/</a>. But I&#39;m a perl nerd at heart, so I ported it to perl. He&#39;s actively working on his library, so I expect to have to update this module relatively regularly. File: <a href="Crypt-PBC-0.855.tar.gz">Crypt-PBC-0.855.tar.gz</a> Man Page: <a href="?eo_cat=cpbc-PBC.html">Crypt::PBC</a>. <br /><br />Changes: <pre>0.855: Fri Mar 27 18:42:50 EDT 2009
   - added chrony&#39;s meta.yml stuff for the github repo

0.854: Thu Aug 21 06:21:28 EDT 2008
   - Used EU::MM&#39;s prompt() instead of rolling my own.  BingOS++.
     Woops.

0.853: Thu Aug 14 12:05:26 EDT 2008
   - Fixed a build problem for bsd 
   - Fixed an eval { use Something } problem in a test.
     It now reads eval q{ use something };  ... grrz.
</pre></p>
</folder>
<folder nosig='1' nlink="Net-Pcap-Easy" date="Fri Mar 27 18:30:03 2009" title="Net::Pcap::Easy">
<p> Net::Pcap does the job, but it&#39;s confusing and difficult to operate. This module solves that problem in a relatively general way.<br /><br /> I wanted an way to build libpcap filters really quickly. It shouldn&#39;t take two hours to crank one out, particularly since I imagine they all kinda look the same. So, I wrote this to simplify writing sniffers really quickly.<br /><br /> Here it is: <a href="Net-Pcap-Easy-1.325.tar.gz">Net-Pcap-Easy-1.325.tar.gz</a> Read it: <a href="?eo_cat=PcapEasy.html">Net::Pcap::Easy</a>. <br /><br />Changes: <pre>1.325: Fri Mar 27 18:28:59 EDT 2009
   - gah, bug in the Makefile.PL, noticed it when I installed on
     my new server.

1.322: Thu Mar 26 06:36:05 EDT 2009
   - There were a bunch of documentation bugs.
   - I fixed some lousy Makefile.PL code

1.321: Wed Mar 25 20:54:13 EDT 2009
   - added chorny&#39;s META.yml stuff
</pre></p>
</folder>
<folder nosig='1' nlink="Statistics-Basic" date="Thu Mar 26 12:29:33 2009" title="Statistics::Basic">
<p> Essentially, I wanted a set of perl native packages that would do very basic statistics. That package (<a href="Statistics-Basic-1.6005.tar.gz">Statistics-Basic-1.6005.tar.gz</a>) is called <a href="?eo_cat=Statistics-Basic.html">Statistics::Basic</a>. It contains things like ::Mean, ::StdDev, ::Covariance, etc. <br /><br />Changes: <pre>1.6005: Thu Mar 26 12:22:23 EDT 2009
   - META.yml stuff

1.6004: Sun Mar  1 07:15:37 EST 2009
   - doc bug found by Raj Chandran

1.6003: Sun Feb  8 17:21:39 EST 2009
   - perl 5.8.0 can&#39;t deal with this program, requiring 5.8.1:
</pre></p>
</folder>
<folder nosig='1' nlink="POSIX-Regex" date="Wed Mar 25 11:54:50 2009" title="POSIX::Regex">
<p> I wanted POSIX regexs in perl. It&#39;s not the first time I&#39;ve wanted them. So I cranked &#39;em out. The File: <a href="POSIX-Regex-1.0001.tar.gz">POSIX-Regex-1.0001.tar.gz</a> The Manpage: Check out the man page: <a href="?eo_cat=Regex.html">POSIX::Regex</a>. <br /><br />Changes: <pre>1.0001: Wed Mar 25 11:21:42 EDT 2009
   - releasing this as 1.0.1 because I had accidentally released
     it as a developer release

1.0: Thu Aug  7 15:25:12 EDT 2008
   - after much hullabaloo, I have determined that version.pm
     needs Module::Build to work reliably with XS and I have
     further determined that Module::Build causes more problems
     than it solves.  I hate it.  So I&#39;m removing version.pm and
     Module::Build and going back to the ultra stable
     ExtUtils::MakeMaker.

0.90.16: Wed Jul 30 07:28:25 EDT 2008
   - changed my author and copyright sections, they were all
     wrong
   - removed the Makefile.PL, causes problems
</pre></p>
</folder>
<folder nosig='1' nlink="Net-SMTP-OneLiner" date="Fri Mar  6 11:35:48 2009" title="Net::SMTP::OneLiner">
<p> This exports a send_mail() function into your local namespace.<br />The package: <a href="Net-SMTP-OneLiner-2.0.tar.gz">Net-SMTP-OneLiner-2.0.tar.gz</a> The Manpage: <a href="?eo_cat=OneLiner.html">Net::SMTP::OneLiner</a><br /><br />Changes: <pre>2.0: Fri Mar  6 11:26:01 EST 2009
   - ditched version.pm (doesn&#39;t work reliably)
   - added content encoding and transfers

1.4.0: Sun Oct 19 13:15:01 EDT 2008
   - made the subject optional

1.3.3: Tue May 27 12:02:10 EDT 2008
   - (wow, use version has to be on the same line as our $VERSION
      for older EUMM)
</pre></p>
</folder>
<folder nosig='1' nlink="" date="Fri Oct 31 07:57:43 2008" title="">
<p> I wanted a bunch of patches to <a href="?eo_cat=Net-IMAP-Simple-Net-IMAP-Simple.html">Net::IMAP::Simple</a>, and the authors do not respond via rt.cpan nor email. This is my patched version, it gives put() unseen() and a bugfix. Here it is: <a href="Net-IMAP-Simple-Plus-1.17006.tar.gz">Net-IMAP-Simple-Plus-1.17006.tar.gz</a><br /><br />Changes: <pre>1.17006: Fri Oct 31 07:56:45 EDT 2008
   - trying to make the makefile.pl work in 5.6

1.17005: Tue Oct 28 13:10:40 EDT 2008
   - I fixed a couple tiny little things with flags() and a pod
     typo

1.17004: Thu Oct 16 07:20:30 EDT 2008
   - This might fix the darwin build problems.  I think the silly
     pure perl version of patch I&#39;m distributing (thank you CWEST
     btw) was expecting darwin to do something it didn&#39;t want to
     do ... I use unlink() excessively to solve this problem
     (theoretically).
</pre></p>
</folder>
<folder nosig='1' nlink="Object-Previous" date="Wed Oct 29 08:35:30 2008" title="Object::Previous">
<p> I&#39;ve been wishing for a long time that perl had a previous_object() function like Pike. They showed me how on perlmonks.org... So I wipped this together quick. Here it is: <a href="Object-Previous-1.1005.tar.gz">Object-Previous-1.1005.tar.gz</a> Read it: <a href="?eo_cat=Previous.html">Object::Previous</a>. <br /><br />Changes: <pre>1.1: Wed Oct 29 08:33:39 EDT 2008
   - roflmao: I quit using version.pm but left it in the pm

1.1: Thu Aug  7 15:49:49 EDT 2008
    - version.pm is incompatible with EU::MM and
    - removed the Autoloader from the .pm

1.0.0:  Sat Jun  7 19:59:19 EDT 2008
    - finished the pure perl and XS versions
</pre></p>
</folder>
<folder nosig='1' nlink="Date-Lima" date="Tue Aug 12 14:12:23 2008" title="Date::Lima">
<p> Nichus and I wrote this one for our network monitoring scripts. It turns 7654321 seconds into 12w4d14h12m1s. <a href="Date-Lima-1.3.tar.gz">Date-Lima-1.3.tar.gz</a> / <a href="?eo_cat=Lima.html">Date::Lima</a>. <br /><br />Changes: <pre>1.3: Tue Aug 12 07:19:17 EDT 2008
   - I modernized this greatly

1.2:  Fri Sep 22 07:47:51 EDT 2000
   - jettero redid the NAME field to match cpan

1.1:  Fri Sep 22 07:47:51 EDT 2000
   - jettero redid the exports
</pre></p>
</folder>
<folder nosig='1' nlink="Unix-Process" date="Fri Aug  8 06:57:08 2008" title="Unix::Process">
<p> I needed a way to get info about a process. I wanted it to work under BSD and Linux. Check out the man page: <a href="?eo_cat=Process.html">Unix::Process module</a> (<a href="Unix-Process-1.31.tar.gz">Unix-Process-1.31.tar.gz</a>). <br /><br />Changes: <pre>1.31: 
   - I used a perl 5.8 syntax in my Makefile.PL
   - although, I think this should work in perl 5.6
     + hrm, looks like IPC::System::Simple doesn&#39;t work under
       5.6, at some point they started using the &#34;use if WINDOWS&#34;
       syntax, which I think is from later perls.

1.300_000: Tue May 27 12:09:33 EDT 2008
   - The autoloader was kinda crappy
   - There were whitespace bugs
   - I hate M::B and went back to EU::MM
     (so I also ditched version.pm)

1.2.1: Mon May 26 15:44:35 EDT 2008
   - I might as well do a new version of everything using
     version.pm while I wait for all my CPAN deletes to go
     through.  I just discovered that version.pm doesn&#39;t/didn&#39;t
     go core until perl 5.9...  I really wish I&#39;d have prereqed
     it everywhere I used it, but I didn&#39;t.  *sigh*
</pre></p>
</folder>
<folder nosig='1' nlink="MySQL-Easy" date="Mon Jun  9 20:57:02 2008" title="MySQL::Easy">
<p> This (<a href="MySQL-Easy-2.0.4.tar.gz">MySQL-Easy-2.0.4.tar.gz</a>) is something I&#39;ve been using over and over. I don&#39;t remember how I used to live without it. I had quit publishing this on CPAN for a while, but I decided to put it back after soneome asked about it. I have gotten grief about the namespace previously, but moving it into DBIx didn&#39;t work out. Check out the man page: <a href="?eo_cat=DEMySQL.html">MySQL::Easy module</a>. <br /><br />Changes: <pre>2.0.4: Mon Jun  9 20:55:50 EDT 2008
   - added a smarter last_insert_id

2.0.3: Tue May 27 12:04:27 EDT 2008
   - (wow, use version has to be on the same line as our $VERSION
      for older EUMM)

2.0.2: Mon May 26 15:56:50 EDT 2008
   - I might as well do a new version of everything using
     version.pm while I wait for all my CPAN deletes to go
     through.  I just discovered that version.pm doesn&#39;t/didn&#39;t
     go core until perl 5.9...  I really wish I&#39;d have prereqed
     it everywhere I used it, but I didn&#39;t.  *sigh*
</pre></p>
</folder>
<folder nosig='1' nlink="Crypt-Cracklib" date="Thu Jul 19 09:15:26 2007" title="Crypt::Cracklib">
<p> I didn&#39;t write this. I fetched the CPAN version and the requirements failed to mention Test::Pod::Coverage. The tests didn&#39;t pass. And I was just generally POed about it. So I repackaged it and uploaded it to my website. I won&#39;t be releasing this version on CPAN or anything. I probably won&#39;t even mention it to the author. File: <a href="Crypt-Cracklib-1.1.jet.tar.gz">Crypt-Cracklib-1.1.jet.tar.gz</a> Man Page: <a href="?eo_cat=Cracklib.html">Crypt::Cracklib</a>. Last updated on Thu Jul 19 09:15:26 EDT 2007 </p>
</folder>
<folder nosig='1' nlink="Games-Go-SGF2misc" date="Tue Jul  3 06:37:00 2007" title="Games::Go::SGF2misc">
<p><a href="?eo_cat=SGF2misc.html">Games::Go::SGF2misc</a> is yet another SGF reader (<a href="Games-Go-SGF2misc-0.9.8.tar.gz">Games-Go-SGF2misc-0.9.8.tar.gz</a>). This one spews forth the SGF in several formats. as_perl(), as_hash(), as_png(), etc... It is designed to work without the help or need for the infamous sgf2misc by J. Van Der Steen (http://gobase.org/software/sgf2misc/). And also without the perfectly acceptable Games::Go::SGF. </p>
</folder>
<folder nosig='1' nlink="Net-IdentServer" date="Sat May  7 14:06:41 2005" title="Net::IdentServer">
<p> This (<a href="Net-IdentServer-0.56.tar.gz">Net-IdentServer-0.56.tar.gz</a>) is something I wrote for validating DSL users from behind a masq firewall. Long story. Check out the man page: <a href="?eo_cat=IdentServer.html">Net::IdentServer module</a>. Last updated on Sat May 7 14:06:41 EDT 2005 </p>
</folder>
<folder nosig='1' nlink="AI-GAUL" date="Wed May  5 09:09:59 2004" title="AI::GAUL">
<p><a href="?eo_cat=ai.gaul.html">AI::GAUL</a> is just a simple XS wrapper for the most excellent GAUL C lib. It is not done yet. Snag it here: <a href="AI-GAUL-0.0.7.tar.gz">AI-GAUL-0.0.7.tar.gz</a> Last Modified: Wed May 5 09:09:53 EDT 2004 </p>
</folder>
<folder nosig='1' nlink="Text-SpellCheck" date="Tue Apr 13 07:29:05 2004" title="Text::SpellCheck">
<p> The <a href="?eo_cat=SpellCheck.html">Text::SpellCheck module</a> (<a href="Text-SpellCheck-0.56.tar.gz">Text-SpellCheck-0.56.tar.gz</a>) is just something I wanted for my <a href="http://www.givin60.com">giving 60</a> site. I never did get around to installing it though.<br /> Last updated: Tue Apr 13 07:29:01 EDT 2004 </p>
</folder>
<folder nosig='1' nlink="" date="Fri Aug  1 13:26:20 2003" title="">
<p> This cute little module makes dockapps. <br /> File: <a href="Wharf-JDockApp-1.2.1.tar.gz">Wharf-JDockApp-1.2.1.tar.gz</a><br /> Man: <a href="JDockApp.html">Wharf::JDockApp</a></p>
</folder>
<folder nosig='1' nlink="FoxPro-DBF" date="Sat Feb  8 12:18:48 2003" title="FoxPro::DBF">
<p> This (<a href="FoxPro-DBF-0.16.tar.gz">FoxPro-DBF-0.16.tar.gz</a>) is something I&#39;ve been meaning to make for quite a while. The <a href="?eo_cat=DBF.html">FoxPro::DBF module</a>. This first step lets you read foxpro data from any platform (with perl). Clearly this module needs a new name. This module doesn&#39;t work with DBI because DBI is too sql-centric; though, that is an end goal, I just don&#39;t see how I can get this module to work with DBI. Last updated on Sat Feb 8 12:17:44 EST 2003 </p>
</folder>
<folder nosig='1' nlink="Business-CSI" date="Sun Sep 22 13:33:26 2002" title="Business::CSI">
<p> I have to use Card Service International at work ... This made their API bareable. The <a href="?eo_cat=CSI.html">Business::CSI module</a> (<a href="Business-CSI-0.81.1.tar.gz">Business-CSI-0.81.1.tar.gz</a>). Last updated on Mon Jul 30 20:50:47 EDT 2001. </p>
</folder>
<folder nosig='1' nlink="MySQL-GUI" date="Sun Sep 22 13:33:26 2002" title="MySQL::GUI">
<p> This doesn&#39;t work yet. It will (in the future) load up glorious mysql client menus and things. :) <a href="?eo_cat=GUI.html">MySQL::GUI module</a> (<a href="MySQL-GUI-0.35.tar.gz">MySQL-GUI-0.35.tar.gz</a>). Last updated on Thu Jan 17 11:50:50 EST 2002 </p>
</folder>
</page>
