# Minimal nntp client

**URL:** <https://www.ruby-forum.com/t/minimal-nntp-client/131762>\
**Category:** Ruby\
**Created:** [March 13, 2008, 2:32am UTC](https://www.ruby-forum.com/t/minimal-nntp-client/131762 "2008-03-13T02:32:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![gerry\_ford](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/47e85d/32.png) [@gerry\_ford](https://www.ruby-forum.com/u/gerry_ford)\
**Post date:** [March 13, 2008, 2:32am UTC](https://www.ruby-forum.com/t/minimal-nntp-client/131762/1 "2008-03-13T02:32:31Z")

</div>

I’m relatively new to ruby, having had one thread regarding commenting.

I’d like to move on to a more authentic task. I would like to write an  
analogous script in ruby as this perl script:

## minimal nntp client

#!/usr/bin/perl -1

use strict;  
use warnings;  
use Net::NNTP;  
use Date::Parse;

my $nsrv=‘[news.newsgroups.com](http://news.newsgroups.com)’;  
my $grp=‘alt.religion.mormon’;  
my $USER = ‘’;  
my $PASS = ‘’;

my $nntp=Net::NNTP-\>new($nsrv) or die “Can’t login to `$nsrv’$!\n”;  
$nntp-\>authinfo($USER,$PASS) or die $!;  
my (undef, $first, $last, undef)=$nntp-\>group($grp)  
or die “Can’t access $grp\n”;

my ($since, @arts)=time-5_60_60;  
for (reverse $first…$last) {  
my %hdr=map /^(\S[^:]+):\s(.\*)$/g, @{$nntp-\>head($_)};  
defined(my $date=$hdr{‘NNTP-Posting-Date’}) or next;  
defined(my $time=str2time $date)  
or warn "Couldn’t parse date for article $_ ($date)\n"  
and next;  
last if $time \< $since;  
unshift @arts, $\_;  
}

$nntp-\>article($\_,\*STDOUT) for @arts;

# perl client2.pl \>text59.txt 2\>text56.txt

**END**

This script retrieves the messages of the last five hours in the  
specified ng.

Q1) What is the ruby analog to the perl use of strict and warnings?

Q2) What analog does ruby have of net:nntp?

Thanks in advance,

---

<div class="post-metadata">

**Author:** ![gerry\_ford](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/47e85d/32.png) [@gerry\_ford](https://www.ruby-forum.com/u/gerry_ford)\
**Post date:** [March 13, 2008, 10:46am UTC](https://www.ruby-forum.com/t/minimal-nntp-client/131762/2 "2008-03-13T10:46:50Z")

</div>

Gerry F. wrote:

> use warnings;  
> my (undef, $first, $last, undef)=$nntp-\>group($grp)  
> unshift @arts, $\_;  
> Q1) What is the ruby analog to the perl use of strict and warnings?
> 
> Q2) What analog does ruby have of net:nntp?
> 
> Thanks in advance,

Shameless plug:

There’s my small library at  
[http://rubyforge.org/projects/ruby-net-nntp/](http://rubyforge.org/projects/ruby-net-nntp/). Can be installed via  
rubygems (gem install ruby-net-nntp) and used according to the  
documentation.

It’s still not 100% feature complete, so I consider it in beta state,  
but covers most ofyour needs, and if you need assistance, just ask me.

tony

---

<div class="post-metadata">

**Author:** ![gerry\_ford](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/47e85d/32.png) [@gerry\_ford](https://www.ruby-forum.com/u/gerry_ford)\
**Post date:** [March 14, 2008, 4:58am UTC](https://www.ruby-forum.com/t/minimal-nntp-client/131762/3 "2008-03-14T04:58:25Z")

</div>

Anton B. wrote:

> Gerry F. wrote:

> > Q2) What analog does ruby have of net:nntp?
> > 
> > Thanks in advance,
> 
> Shameless plug:
> 
> There’s my small library at  
> [http://rubyforge.org/projects/ruby-net-nntp/](http://rubyforge.org/projects/ruby-net-nntp/). Can be installed via  
> rubygems (gem install ruby-net-nntp) and used according to the  
> documentation.
> 
> It’s still not 100% feature complete, so I consider it in beta state,  
> but covers most ofyour needs, and if you need assistance, just ask me.  
> Thanks Anton.

I downloaded your library as well as the nntp gem. My next question is  
where I should put it. When I downloaded a perl date::parse module,  
what they expect is that it gets put in the site file, and then has a  
folder called ‘Date’ wherein lies Parse.pm

This screenshot shows my gem subdirectory: [http://zaxfuuq.net/ruby5.jpg](http://zaxfuuq.net/ruby5.jpg)  
. The directory just keeps sprawling. Where all would ruby.exe look  
for something required?

My second question is how to call something from these gems. They seem  
inscrutable to me.

## Beautiful night here in New Mexico. Cheers.

---

<div class="post-metadata">

**Author:** ![gerry\_ford](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/47e85d/32.png) [@gerry\_ford](https://www.ruby-forum.com/u/gerry_ford)\
**Post date:** [March 14, 2008, 5:05am UTC](https://www.ruby-forum.com/t/minimal-nntp-client/131762/4 "2008-03-14T05:05:49Z")

</div>

Thomas W. wrote:

> On Thu, Mar 13, 2008 at 2:32 AM, Gerry F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > Q1) What is the ruby analog to the perl use of strict and warnings?
> 
> I am not really experienced in Perl, but as I understand it. strict  
> enforces that you have to declare variables, so that when you mistype  
> something an error occurrs. You get a NameError in Ruby when you use a  
> variable which hasn’t any value assigned:
> 
> # irb
> 
> # foo has a value
> 
> foo = “Hello”  
> puts foo # “Hello”
> 
> # bar is not declared
> 
> puts bar
> 
> # NameError: undefined local variable or method `bar’ for main:Object
> 
> # from (irb):6
> 
> As far as I know you can’t turn warnings on from your code, but you  
> can run Ruby with the “-w” option which shows warnings.  
> Thanks, Thomas. It sounds like ruby is already “strict” in the perl  
> sense. As for warnings, I’ll enable them on the goocher, which is what  
> I call a dos command that I comment out at the end of a script: Thus

# perl client2.pl \>text59.txt 2\>text56.txt

**END**  
becomes, in ruby, with warnings enabled:

# ruby -w client2.rb \>text59.txt 2\>text56.txt

**END**

## Cheers.

---

<div class="post-metadata">

**Author:** ![gerry\_ford](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/47e85d/32.png) [@gerry\_ford](https://www.ruby-forum.com/u/gerry_ford)\
**Post date:** [March 13, 2008, 11:13am UTC](https://www.ruby-forum.com/t/minimal-nntp-client/131762/5 "2008-03-13T11:13:32Z")

</div>

On Thu, Mar 13, 2008 at 2:32 AM, Gerry F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Q1) What is the ruby analog to the perl use of strict and warnings?

I am not really experienced in Perl, but as I understand it. strict  
enforces that you have to declare variables, so that when you mistype  
something an error occurrs. You get a NameError in Ruby when you use a  
variable which hasn’t any value assigned:

# irb

# foo has a value

foo = “Hello”  
puts foo # “Hello”

# bar is not declared

puts bar

# NameError: undefined local variable or method `bar’ for main:Object

# from (irb):6

As far as I know you can’t turn warnings on from your code, but you  
can run Ruby with the “-w” option which shows warnings.
