$B%b%8%e!<%k(B

plum$B$N%b%8%e!<%k$O$9$Y$F(Bperl$B$G=q$+$l$F$$$^$9!#(B $BIaDL$N(Bperl$B%9%/%j%W%H$H$O0c$C$F!"(Bplum$B$+$i%b%8%e!<%k$H$7$F(B $B;H$($k$h$&$K$9$k$?$a$N$$$/$D$+$N plum$B$N%b%8%e!<%k$O%$%Y%s%H$KBP$9$k=hM}$r9T$&%5%V%k!<%A%s$N=8$^$j$G$9!#(B $B%b%8%e!<%k$K$O!"$I$s$J%$%Y%s%H$,H/@8$7$?$H$-$K$I$s$J=hM}$r9T$&$+$r(B $B%5%V%k!<%A%s$K=q$$$F$*$/$@$1$G!"$"$H$O(Bplum$B$,%$%Y%s%H$NH/@8$K1~$8$F!"(B $B$=$l$i$N%5%V%k!<%A%s$r

$B%5%V%k!<%A%s(B

plum$B$O2?$+$N%$%Y%s%H$,H/@8$9$k$H!"(B $B3F%b%8%e!<%k$K$"$kFCDj$NL>A0$N%5%V%k!<%A%s$rA0$O%$%Y%s%H$4$H$K(B1$B$D(B1$B$D7h$^$C$F$*$j!"(B $B%$%Y%s%H$,H/@8$9$k$H!"$=$l$KBP1~$9$kL>A0$N%5%V%k!<%A%s$,$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B
main_loop ($B%f!<%6(BNO)
$B%a%$%s%k!<%W$r=hM}$9$k$4$H$K server_open ($B%U%!%$%k(BNO)
$B%5!<%P$K@\B3$7$?$H$-$K server_close ($B%U%!%$%k(BNO)
$B%5!<%P$H$N@\B3$,JD$8$i$l$?$H$-$K client_open ($B%U%!%$%k(BNO)
$B%/%i%$%"%s%H$r@\B3$7$?$H$-$K client_close ($B%U%!%$%k(BNO)
$B%/%i%$%"%s%H$H$N@\B3$,JD$8$i$l$?$H$-$K server_read ($B%U%!%$%k(BNO, $B%a%C%;!<%8(B)
$B%5!<%P$+$iF~NO$,$"$C$?$H$-$K server_write ($B%U%!%$%k(BNO, $B%a%C%;!<%8(B)
$B%5!<%P$K=PNO$9$k$H$-$K client_read ($B%U%!%$%k(BNO, $B%a%C%;!<%8(B)
$B%/%i%$%"%s%H$+$iF~NO$,$"$C$?$H$-$K client_write ($B%U%!%$%k(BNO, $B%a%C%;!<%8(B)
$B%/%i%$%"%s%H$X=PNO$9$k$H$-$K ss_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B0z?t(B1, $B0z?t(B2, ...)
$B%5!<%P$+$i%3%^%s%I$NF~NO$,$"$C$?$H$-$K sp_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B0z?t(B1, $B0z?t(B2, ...)
$B%5!<%P$X%3%^%s%I$r=PNO$9$k$H$-$K cs_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B0z?t(B1, $B0z?t(B2, ...)
$B%/%i%$%"%s%H$+$i%3%^%s%I$NF~NO$,$"$C$?$H$-$K cp_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B0z?t(B1, $B0z?t(B2, ...)
$B%/%i%$%"%s%H$X%3%^%s%I$r=PNO$9$k$H$-$K cpss_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B%A%c%s%M%k(B, $B0z?t(B)
$B%5!<%P$+$i(BPRIVMSG$B$G(BCTCP$B$N%3%^%s%I$NF~NO$,$"$C$?$H$-$K cpsp_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B%A%c%s%M%k(B, $B0z?t(B)
$B%5!<%P$X(BPRIVMSG$B$G(BCTCP$B$N%3%^%s%I$r=PNO$9$k$H$-$K cpcs_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B%A%c%s%M%k(B, $B0z?t(B)
$B%/%i%$%"%s%H$+$i(BPRIVMSG$B$G(BCTCP$B$N%3%^%s%I$N(B $BF~NO$,$"$C$?$H$-$K cpcp_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B%A%c%s%M%k(B, $B0z?t(B)
$B%/%i%$%"%s%H$X(BPRIVMSG$B$G(BCTCP$B$N%3%^%s%I$r=PNO$9$k$H$-$K cnss_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B%A%c%s%M%k(B, $B0z?t(B)
$B%5!<%P$+$i(BNOTICE$B$G(BCTCP$B$N%3%^%s%I$NF~NO$,$"$C$?$H$-$K cnsp_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B%A%c%s%M%k(B, $B0z?t(B)
$B%5!<%P$X(BNOTICE$B$G(BCTCP$B$N%3%^%s%I$r=PNO$9$k$H$-$K cncs_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B%A%c%s%M%k(B, $B0z?t(B)
$B%/%i%$%"%s%H$+$i(BNOTICE$B$G(BCTCP$B$N%3%^%s%I$N(B $BF~NO$,$"$C$?$H$-$K cncp_$B%3%^%s%I(B ($B%U%!%$%k(BNO, $B%W%l%U%#%/%9(B, $B%3%^%s%I(B, $B%A%c%s%M%k(B, $B0z?t(B)
$B%/%i%$%"%s%H$X(BNOTICE$B$G(BCTCP$B$N%3%^%s%I$r=PNO$9$k$H$-$K $B$=$l$>$l$N%5%V%k!<%A%s$OCLG$7$^$9!#(B

$B%Q%C%1!<%8(B

plum$B$N%b%8%e!<%k$O$=$l$>$l$,(B1$B$D(B1$B$D$N%Q%C%1!<%8$r;}$C$F$$$^$9!#(B $B$=$l$>$l$,FHN)$7$?%Q%C%1!<%8$r;}$D$3$H$K$h$C$F!"(B $BJQ?tL>$J$I$,B>$N%Q%C%1!<%8$H=E$J$C$F$bBg>fIW$J$h$&$K$J$C$F$$$^$9!#(B $B%Q%C%1!<%8L>$O86B'$H$7$F%G%#%l%/%H%jL>$H%U%!%$%kL>$r(B $B!V(B_$B!W$G$D$J$$$@$b$N$G$9!#(B $BNc$($P!"!V(Bdir/module.plm$B!W$N%Q%C%1!<%8L>$O!V(Bdir_module$B!W$K$J$j$^$9!#(B $B%b%8%e!<%k$N%G%#%l%/%H%j$d%U%!%$%kL>$K$O!V(B_$B!W$O;H$o$J$$$h$&$K$7$F2<$5$$!#(B

$B3F%b%8%e!<%k$O=i4|2=$7$?$H$-$K!"(B $BI,$:$=$l$>$l$N%b%8%e!<%k$N%Q%C%1!<%8L>$rJV$5$J$1$l$P$$$1$^$;$s!#(B $B%Q%C%1!<%8$NL>A0$O!V(B$_$B!W$KF~$l$FJV$7$^$9!#(B $B$^$?!"%b%8%e!<%k$r8+$d$9$/$9$k$?$a!"%0%m!<%P%k$JJQ?t$N=i4|2=$O(B $B!V(B$_$B!W$X$NBeF~$NA0$K9T$&$h$&$K$7$F2<$5$$!#(B