I'm looking for some pointers on how to print the entire nntp article. I've only been studying perl for coming up on two years now.
#!/usr/bin/perl
# perl qq2.pl
##minimal nntp client
use strict;
use warnings;
use Net::NNTP ();
use constant NUMBER_OF_ARTICLES => 2;
use constant GROUP_NAME => 'comp.lang.perl.misc';
use constant SERVER_NAME => 'news.individual.net';
use constant NNTP_DEBUG => 0;
my $nntp = Net::NNTP->new(SERVER_NAME, 'Debug' => NNTP_DEBUG) or die;
my $USER = 'merrilljensen';
my $PASS = 'quoatohngipu';
$nntp->authinfo($USER,$PASS) or die $!;
my($article_count, $first_article, $last_article) = $nntp->group(GROUP
+_NAME) or die;
# Which XOVER fields contain Subject: and From:?
my $count = 0;
my %xover_fmt = map( ($_, $count++), @{ $nntp->overview_fmt or die} );
die unless exists $xover_fmt{'Subject:'};
my $subject_offset = $xover_fmt{'Subject:'};
my $from_offset = $xover_fmt{'From:'};
my(@xover, $start_article);
RETRIEVE: while ($#xover+1 < NUMBER_OF_ARTICLES and $last_article >= $
+first_article) {
# How many articles do we need? Stop retrieving if we have enough
my $articles_required = NUMBER_OF_ARTICLES - ($#xover+1) or last R
+ETRIEVE;
# Fetch overview information for the articles
$start_article = $last_article - ($articles_required-1);
$start_article = $start_article > $first_article ? $start_article
+: $first_article;
my $xover_query = $start_article == $last_article ?
$start_article :
[$start_article, $last_article];
my $xover_ref = $nntp->xover($xover_query) or die;
# Store headers for the articles we've retrieved
foreach (sort {$b <=> $a} keys %$xover_ref) {
push @xover, $xover_ref->{$_};
}
} continue {
# Move the pointer forward to fetch previous articles
$last_article = $start_article - 1;
}
print $nntp->body;
__END__
output:
C:\MinGW\source>perl qq2.pl
ARRAY(0x1a16d80)ARRAY(0x1a16c3c)
C:\MinGW\source>perl qq2.pl
ARRAY(0x1a16b1c)
C:\MinGW\source>
Thanks for your comment and cheers,