Installed Perl Modules

Another interesting way to use a Feed is to keep track of changing system configurations. The following is a simple example. I have two machines running my scripts; one is my laptop and the other a server in a rack somewhere in North America. I write mostly in Perl and use a lot of modules. It’s useful to me to keep track of what’s installed, and what’s not, on each; this script produces a feed of the modules I have installed.

Walking Through the Code

We’ll use the usual modules plus one more, ExtUtils::Installed . Written by Alan Burlison, this module really does all the work here. Again, this is somewhat the point of this chapter. Feeds aren’t difficult things, and they are incredibly useful interfaces to list-like data.

use warnings;
use strict;
use CGI qw(:standard);
use XML::RSS;
use ExtUtils::Installed;

ExtUtils::Installed creates an array of all the installed modules; run the shell command uname -n to find the name of the machine we’re running the script on:

my $installed    = ExtUtils::Installed->new( );
my $machine_name = `uname -n`;

Now, set up the feed as usual, using the machine name to label it:

my $rss = new XML::RSS( version => '2.0' );
$rss->channel(
    title       => "Perl Modules on $machine_name",
    link        => "http://www.benhammersley.com/tools/",
    description => "A list of installed Perl modules on $machine_name"
);

Finally, go through the array, pulling out the name and version number of each module and creating the items. Then serve it up. Simple.

foreach my ...

Get Developing Feeds with RSS and Atom now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.