perlanet - command line interface to


$ perlanet


$ perlanet config_file


perlanet is a command line program for aggregating web feeds (both Atom and RSS) and publishing a new web page and a new web feed containing the results of that aggregation.

Command line arguments

perlanet takes one optional command line argument, which is the name of a configuration file to use. If no filename is given then the program looks for a file called perlanetrc in the current directory.

Configuration file

perlanet requires a configuration file which contains details of which feeds to aggregate and what to do with the results of the aggregation. By default, perlanet looks for a file called perlanetrc in the current directory, but this name can be overridden by passing the name of a different file when calling the program.

The configuration file is in YAML format. YAML is a simple text-based file format. See for further details.

Configuration options

The configuration file can contain the following options.

Example configuration file

title: planet test
description: A Test Planet
  name: Dave Cross
entries: 20
opml: opml.xml
  file: index.html
  file: atom.xml
  format: Atom
cache_dir: /tmp/feeds
  - url:
    title: Dave's Blog
  - url:
    title: Dave's use.perl Journal
  - url:
    title: Dave on O'Reillynet

Output template

The web page is created from a Template Toolkit template. This template is passed two variables.

Example output template

This is a simple template which uses the feed variable to display details of the aggregated feeds.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>[% feed.title %]</title>
    <h1>[% feed.title | html %]</h1>
    <p>[% feed.description | html %]</p>
[% FOREACH entry IN feed.entries %]
    <h2><a href="[% | url | html %]">[% entry.title | html %]</h2></a>
    [% entry.content.body %]
[% IF OR entry.issued %]
    <p>Published[% IF %] by [% | html; END %]
    [% IF entry.issued %] on [% entry.issued | html; END %]</p>
[% END %]
[% END %]
    <hr />
    <address>[% | html %] / [% feed.modified | html %]</address>

In the future, the Perlanet wiki at will contain a cookbook of useful ideas to include in the output template.


To report bugs in Perlanet, please use the CPAN request tracker. You can either use the web page at or send an email to

See also


Dave Cross,

Copyright (C) 2008-2018 by Magnum Solutions Ltd.

This progam library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.