基本的なサーバーの書き方

Perlでサーバーを書くのは難しくありません。
ソケットを作り、ポートに結びつけ(bind)、接続を待ち(listen)、接続を受け付け(accept)、来たら適当に処理するだけです。
このときlistenまでは一回だけやればよく、acceptをwhileでループして、何度も接続をうけることができます。
実際のechoサーバー(=入力された内容を反射するだけのサーバー)は以下のようになります。(たったこれだけです)

use Socket;
#ソケット作成
socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die;
#ポートに結びつけ 6666番
bind(SERVER, pack_sockaddr_in(6666, INADDR_ANY)) or die;
#接続を待つ
listen(SERVER, SOMAXCONN) or die;
#接続が来たら中を実行、それまで待機
while(my $sockaddr = accept(CLIENT, SERVER)){
	my $org_handle = select(CLIENT); $| = 1; select($org_handle);
	while(<CLIENT>){
		print CLIENT $_;
	}
}

これを起動した後、telnet localhost 6666でサーバーに接続してみてください。
入力した内容がそのまま帰ってくるはずです。