[Edit][Create New]
[ IndexPage / ネットとプログラミング / CGI / クライアントプログラムサンプル / pop2.pl ]

pop2.pl

#!/usr/bin/perl

use Socket; 

# URLを解釈する
$hostname = $ARGV[0] or die; 
$port = 110; # ポート番号
$ipaddr = inet_aton($hostname);

# ソケット作成
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die;

# connectする(bindは省略してある)
connect(SOCK, sockaddr_in($port, $ipaddr)) or die;

# バッファリング無効
select(SOCK); $| = 1; select(STDOUT);

#######################################

# POPサーバーから送られてくる挨拶を受け取る
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;

# ユーザー名を聞く
print "Username?\n";
chop($username = <STDIN>);

# ユーザー名をサーバーに確認を取る
print SOCK "USER $username\r\n";
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;

# パスワードを聞く
print "Password?\n";
system("stty -echo"); # 画面にパスワードがでないよう工夫
chop($pass = <STDIN>);
system("stty echo");  # もとにもどす

# パスワードをサーバーに確認を取る
print SOCK "PASS $pass\r\n";
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;

# メール番号を聞く
print "Mail Number?\n";
chop($mailno = <STDIN>);

# 届いているメールを取得する
print SOCK "RETR $mailno\r\n";
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;

# [.]が来るまで表示
while(<SOCK>){
	last if $_ eq ".\r\n";
	print;
}