sub f{ for$w(keys%k){&t} } $/=$_; ($,,$w=$a,%k)=splice@ARGV,0,3; socket S,2,1,6; bind S,&a; sub i{ $k{$w}=1 } sub a{ $w=~/:/; pack'CxnC4x8',2,$',split'\.',$` } sub t{ socket X,2,1,6; if(connect X,a){ print X "$, $_[0] $_[1]/$_[2]"; close }else{ delete$k{$w} } } listen S,5; while(@ARGV&&($_="$, $a f".shift)||accept(C,S)&&($_=)&&close){ m!(\S*) ([e-i])([^/]*)/!s&&$,eq$`&&&$2($w=$1,$3,$') } sub e{ open F,'>',$3; print F $'; close } sub g{ open(F,'<',$3)&&t$a,"e$3", ; close F } sub h{ t$_,i for keys%k }