Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Thursday November 14, 2002
04:24 PM

Fetch a single journal entry

[ #8952 ]

I continue to improve my terminal use.perl reader. I needed a bit to fetch a single entry. It is my previous script which the looping stuff cut out and a command line argument added. Of course, this should be a module, but I don't want to write another module at the moment. Let someone else do that. :)

#!/usr/bin/perl -w
use strict;
 
=head1 NAME
 
use_journal - get a single entry from a use.perl journal
 
=head1 SYNOPSIS
 
% use_journal ID
 
=head1 DESCRIPTION
 
This script fetches a single journal entry by its entry ID.
I wrote it so other programs could shell out to it to fetch
an entry.
 
=head1 AUTHOR
 
brian d foy, E<lt>bdfoy@cpan.orgE<gt>
 
=head1 COPYRIGHT
 
Copyright 2002, brian d foy, All rights reserved.
 
You may use this script under the same terms as Perl itself
 
=cut
 
use File::Spec::Functions;
use SOAP::Lite;
use Text::Template;
 
my $id          = $ARGV[0];
 
die "The entry ID must be a string on digits only\n" if $id =~ m/\D/;
 
my $Debug       = $ENV{USE_PERL_JOURNAL_DEBUG}    || 0;
my $Template    = $ENV{USE_PERL_JOURNAL_TEMPLATE} ||
    catfile( $ENV{HOME}, ".journal.tmpl" );
 
die "Could not open template file\n" unless -r $Template;
 
my $host        = 'use.perl.org';
my $uri         = "http://$host/Slash/Journal/SOAP";
my $proxy       = "http://$host/journal.pl";
 
my $journal  = SOAP::Lite->uri( $uri )->proxy( $proxy );
my $template = Text::Template->new( SOURCE => $Template );
 
my $hash  = $journal->get_entry( $id )->result;
 
die "No journal entry for $id\n" unless $hash;
 
print $template->fill_in( HASH => { entry => $hash } );