#!/usr/bin/perl use strict; use warnings; use Net::NNTP; use HTML::Entities; my @alt = ( { server => 'nntp.perl.org', group => 'perl.perl5.porters', offset => 0 }, { server => 'news.gmane.io', group => 'gmane.comp.lang.perl.perl5.porters', offset => 77786 }, ); for my $alt (@alt) { my $nntp = Net::NNTP->new($alt->{server}, Timeout => 10) or next; my ($count, $first, $last) = $nntp->group($alt->{group}); 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: Handle strings like "=?utf-8?Q?readers=E2=80=99_?=time" for ((reverse sort keys %d)[0..4]) { $_ = encode_entities($_) for ($d{$_}, $f{$_}, $s{_}); $f{$_} =~ s,@[^.]*\.,@hidden.,; $s{$_} = '(no subject)' if not exists $s{$_}; my $n = $_ + $alt->{offset}; my $u = "https://www.nntp.perl.org/group/perl.perl5.porters/0/0/msg$n.html"; print <
Date: $d{$_}
From: $f{$_}
$s{$_}
HTML } $nntp->quit; exit 0; } die "Cannot retrieve news: $!";