#!/usr/bin/perl use strict; use warnings; use Net::NNTP; use HTML::Entities; my %alt = ( 'nntp.perl.org' => 'perl.perl5.porters', 'news.gmane.io' => 'gmane.comp.lang.perl.perl5.porters', ); my ($nntp, $count, $first, $last); for my $server (keys %alt) { $nntp = Net::NNTP->new($server, Timeout => 10) or next; ($count, $first, $last) = $nntp->group($alt{$server}); last; } die "Cannot retrieve news: $!" if not $nntp; my %d = %{$nntp->xhdr('Date', [$last-10, $last])}; my %f = %{$nntp->xhdr('From', [$last-10, $last])}; my %s = %{$nntp->xhdr('Subject', [$last-10, $last])}; # TODO: Escape potential HTML characters for ((reverse sort keys %d)[0..4]) { $_ = encode_entities($_) for ($d{$_}, $f{$_}, $s{_}); $f{$_} =~ s,@[^.]*\.,@hidden.,; my $l = "https://www.nntp.perl.org/group/perl.perl5.porters/0/0/msg$_.html"; print <
Date: $d{$_}
From: $f{$_}
$s{$_}
HTML } $nntp->quit;