#!/afs/athena/contrib/perl5/perl
# -*- cperl -*-
# a finger implementation in Perl

use strict;
use warnings;
use IO::Socket;

sub finger ($;$$) {
  my ($user, $host, $verbose) = @_;
  defined $host
    or ($user, $host) = ($user =~ /^(.*)@(.+?)$/s)
      or die "No host specified in '$_[0]'\n";

  my $s = new IO::Socket::INET( PeerHost => $host,
				PeerPort => 79,
				Proto    => 'tcp',
				Timeout  => 10 )
    or die "Can't open socket to $host:79: $!";

  print $s "/w " if $verbose;
  print $s "$user\r\n";

  <$s>;
}


@ARGV == 1 or die "usage: $0 [user]\@host\n";

eval {
  my @answers = finger $ARGV[0];
  print foreach @answers;
  1;
} or chomp($@), warn "finger: $@\n";
