&pgid();

**Ìܼ¡ [#t3508b1b]

#contents

[[prototype.js¤ÎÍøÍÑÎ㡧¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼»þ¤Ë¥Æ¥­¥¹¥È¤òÊÔ½¸¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë]]¤Ç¤Ï¡¢¤ªÌ䤤¹ç¤ï¤»¥Õ¥©¡¼¥à¤Î³Îǧ²èÌ̾å¤Ç¥Æ¥­¥¹¥È¤òÊÔ½¸²Äǽ¤Ë¤¹¤ë¤¿¤á¤Ëprototype.js¤ÈÍøÍѤ·¤Þ¤·¤¿¡Êprototype.js¤ÎÍøÍÑÎã¤Ê¤Î¤ÇÅöÁ³¤Ç¤¹¤¬^^;¡Ë

prototype.js¤ÏRails¤È¿ÆÏÂÀ­¤Î¹â¤¤Í­ÍѤʥ饤¥Ö¥é¥ê¤Ç¤¹¤¬¡¢Î¢¤òÊÖ¤¹¤ÈPerlÅù¤Çºî¤é¤ì¤¿¸Å¤¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎAjax²½¤Ë¤Ï¤½¤ì¤Û¤É¿ÆÏÂÀ­¤Ï¹â¤¯¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¡¦¡¦¡¦¡£¥ì¥¬¥·¡¼¤Ê¥¢¥×¥ê¤ÎAjax²½¤Ë¤Ïprototype.js¡Ê¤ÎľÀÜÍøÍѡˤÏɬ¤º¤·¤âŬ¤µ¤Ê¤¤¤«¤â¤È´¶¤¸¤Þ¤·¤¿¡£¤½¤³¤Ç¡¢¥ì¥¬¥·¡¼¤ÊPerl¥¢¥×¥ê¤òAjax²½¤¹¤ëºÝ¤Ë»È¤¨¤½¤¦¤Ê¥é¥¤¥Ö¥é¥ê¤òõ¤·¤Æ¿¨¤Ã¤Æ¤ß¤Þ¤·¤¿¤Î¤Ç¤ªÅÁ¤¨¤·¤Þ¤¹¡£CGI::Ajax¤ÈHTML::Prototype¤È¤¤¤¦Æó¤Ä¤Î¥é¥¤¥Ö¥é¥ê¤ò¤È¤ê¤¢¤²¤ëͽÄê¤Ç¤¹¡£º£²ó¤Ï¡¢¤Þ¤ºCGI::Ajax¤ò¤È¤ê¤¢¤²¤Þ¤¹¡£

#blikimore

¤Ê¤ª¡¢ÀèÆü¼ÂºÝ¤ËPerl¤Ç½ñ¤«¤ì¤¿¤ªÌ䤤¹ç¤ï¤»¥Õ¥©¡¼¥à¥×¥í¥°¥é¥à¤ÎAjax²½¤òprototype.js¤Ç»î¤ß¤Æ¤ß¤¿¤Î¤Ç¤¹¤¬¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤Îprototype.js(¤ª¤è¤ÓJavaScript)¡¢HTML¥½¡¼¥¹¤Î½¤Àµ¤È¥µ¡¼¥Ð¦¤ÎPerl¥¹¥¯¥ê¥×¥È½¤Àµ¤ò¹Ô¤Ã¤¿¤ê¤­¤¿¤ê¤·¤Ê¤¬¤é¡¢Ajax¤òÁȤ߹þ¤àHTML¥¿¥°¤Îid¤Èprototype.js¡¢JavaScript¤È¤ÎƱ´ü¤ò¤È¤ê¡¢¤µ¤é¤ËƱ´ü¤ò¤È¤Ã¤¿id¤òPerl¥¹¥¯¥ê¥×¥È¤¬ÅǤ¯¤è¤¦¤Ë¤¹¤ë¡¢prototype.js¤ò»È¤Ã¤¿¥³¡¼¥É¤òPerl¥¹¥¯¥ê¥×¥È¤«¤éÅǤ¯¤è¤¦¤Ë¤¹¤ë¡¢etc¡¦¡¦¡¦¤ò¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤ºÈó¾ï¤Ë¥á¥ó¥É¥¤¤Ç¤¹¡£


**CGI-Ajax [#e58ed3a8]

CGI::Ajax¤ÏHTML¥Ú¡¼¥¸¾å¤ËȯÀ¸¤·¤¿JavaScript¥¤¥Ù¥ó¥È¤ò¥È¥ê¥¬¡¼¤ËÈóƱ´ü¤Ëperl¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ò¥³¡¼¥ë¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£¤³¤Î¤¿¤á¤Ë¡¢¤Þ¤º¡¢²¼µ­¤Î¤è¤¦¤ËJavaScript¤Î¥Õ¥¡¥ó¥¯¥·¥ç¥ó̾¤ÈPerl¥µ¥Ö¥ë¡¼¥Á¥ó¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤È¤ò¥Þ¥Ã¥Ô¥ó¥°¤µ¤»¤Þ¤¹¡£

 my $cjx = new CGI::Ajax( 'JSFUNC' => \&PERLFUNC );

JSFUNC¤ÏJavaScript¤Î¥Õ¥¡¥ó¥¯¥·¥ç¥ó̾¡¢PERLFUNC¤ÏJSFUNC¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤»¤ëPerl¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç¤¹¡£

¼¡¤Ë¡¢JSFUNC¤òµ¯Æ°¤¹¤ë¥È¥ê¥¬¡¼¡ÊJavaScript¥¤¥Ù¥ó¥È¡Ë¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢onClick¤òÎã¤Ë¼¨¤·¤Æ¤ß¤Þ¤¹¡£

 onClick="JSFUNC(['source1','source2'], ['dest1','dest2']);"

¤³¤³¤Þ¤Ç¤Îµ­½Ò¤Ë¤è¤Ã¤Æ¡¢onClick¥¤¥Ù¥ó¥ÈȯÀ¸»þ¤ËJSFUNC¤¬µ¯Æ°¤µ¤ì¡¢JSFUNC¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤¿Perl¤Î¥µ¥Ö¥ë¡¼¥Á¥ó(PERLFUNC)¤¬¥³¡¼¥ë¤µ¤ì¤Þ¤¹¡£

JSFUNC¤Î°ú¿ô

 ['source1','source2'], ['dest1','dest2']

¤Îsource1¡¢source2¡¢dest1¡¢dest2¤ÏHTML¥Ú¡¼¥¸Æâ¤Îinput¡¢¤ª¤è¤Ódiv¤Îid¤Ç¤¹¡£

  <input type=text id=source1 />
  <input type=text id=source2 />
  <div id=dest1></div>
  <div id=dest2></div>

°ú¿ô¤Ï[]¤Ç¤«¤³¤Þ¤ì¤¿¤â¤Î¤¬Æó¤Ä¤¢¤ê¤Þ¤¹¤¬¡¢ºÇ½é¤Î[]¤ÏÆþÎϤËÁêÅö¤·¡¢Æó¤ÄÌܤÎ[]¤Ï½ÐÎϤËÁêÅö¤·¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢

 onClick="JSFUNC(['source1','source2'], ['dest1','dest2']);"

¤Èɽµ­¤¹¤ë¤È¡¢JSFUNC¤Ø¤ÎÆþÎϤȤ·¤Æsource1¡¢source2¤¬»Ø¤·¼¨¤¹input¤Ø¤ÎÆþÎϥǡ¼¥¿¤òÅϤ·¡¢·ë²Ì¤òdest1¡¢dest2¤¬»Ø¤·¼¨¤¹div¤Ë½ÐÎϤ¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£JSFUNC¤ÏPERLFUNC¤È¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢source1¡¢source2¤¬Perl¥µ¥Ö¥ë¡¼¥Á¥ó(PERLFUNC)¤Î°ú¿ô¤Ë¤Ê¤ê¡¢Perl¥µ¥Ö¥ë¡¼¥Á¥ó(PERLFUNC)¤Î·ë²Ì¤¬dest1¡¢dest2¤ËÊÖ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

***¤â¤Ã¤È¤â¥·¥ó¥×¥ë¤ÊÎã¡Ê°ì¤Ä¤ÎÆþÎϤ˰ì¤Ä¤Î½ÐÎÏ¡Ë [#bc04fe9f]

¥·¥ó¥×¥ë¤ÊÎã¤ò¼¨¤·¤Þ¤¹¡£²¼¤Î¥×¥í¥°¥é¥à¤òŬÅö¤Ê̾Á°¤ÇÊݸ¤·¡¢¥Ö¥é¥¦¥¶¤«¤éCGI¤È¤·¤Æ¼Â¹Ô¤¹¤ë¤È¥Æ¥­¥¹¥È¥Ü¥Ã¥¯¥¹¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£É½¼¨¤µ¤ì¤ë¥Æ¥­¥¹¥È¥Ü¥Ã¥¯¥¹¤Ëʸ»úÎó¤òÆþÎϤ¹¤ë¤È¡Ê¡áJavaScript¤Îkeyup¥¤¥Ù¥ó¥È¤¬È¯À¸¤¹¤ë¤È¡Ë¡¢¡Ö[ÆþÎϤ·¤¿Ê¸»úÎó]¤¬ÆþÎϤµ¤ì¤Þ¤·¤¿¡×¤È²èÌ̤ËÈóƱ´ü¤Çɽ¼¨¤·¤Þ¤¹¡£


 #!/usr/bin/perl
 
 use strict;
 use CGI;
 use CGI::Ajax;
 use Jcode;
 
 my $cgi = new CGI;
 my $cjx = new CGI::Ajax( 'exported_func' => \&perl_func );
 
 print $cjx->build_html( $cgi, \&show_HTML );
 
 sub perl_func {
         my $input = shift;
         my $output = $input . "¤¬ÆþÎϤµ¤ì¤Þ¤·¤¿";
         Jcode::convert(\$output, 'utf8', 'euc');
         return $output;
 }
 
 sub show_HTML {
         my $html = <<EOHTML;
         <html>
         <body>
           ²¿¤«ÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£
           <input type="text" name="val1" id="val1" onkeyup="exported_func( ['val1'], ['resultdiv'] );"/>
           <br/>
           <div id="resultdiv"></div>
         </body>
         </html>
 EOHTML
         Jcode::convert(\$html, 'utf8', 'euc');
         return $html;
 }

val1¾å¤Çkeyup¥¤¥Ù¥ó¥È¤¬È¯À¸¤¹¤ë¤Èexported_func¤¬µ¯Æ°¤µ¤ì¡¢exported_func()¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤¿perl_func()¤¬val1¤Îvalue¤ò°ú¿ô¤Ë¤·¤Æ¥³¡¼¥ë¤µ¤ì¤Þ¤¹¡£perl_func¤Ïval1¤Îvalue(=$input¤Ë³ÊǼ)¤ò¡Ö¤¬ÆþÎϤµ¤ì¤Þ¤·¤¿¡×¤È¤¤¤¦Ê¸»úÎó¤È·ë¹ç¤·¤Æ(=$output¤Ë³ÊǼ)¡¢return¤·¤Þ¤¹¡£¤³¤Î¥ê¥¿¡¼¥ó¤µ¤ì¤¿$output¤¬exported_func()¤ÎÂ裲°ú¿ô¤Ë»ØÄꤵ¤ì¤¿resultdiv¤¬»Ø¤·¼¨¤¹div¤ÎÃͤȤ·¤ÆÊÖ¤µ¤ì¤Þ¤¹¡£

$cjx->build_html()¤ÏCGI¥ª¥Ö¥¸¥§¥¯¥È¤È²èÌ̤ÎHTML¤òÊÖ¤¹¥µ¥Ö¥ë¡¼¥Á¥ó¤Ø¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤ò°ú¿ô¤Ë¤È¤Ã¤Æ¡¢Ajax¥³¡¼¥É¤òÁȤ߹þ¤ó¤ÀHTML¤Îʸ»úÎó¤òÊÖ¤·¤Þ¤¹¡£

***Ê£¿ô¤ÎÆþÎϤËÊ£¿ô¤Î½ÐÎÏ [#f217c6df]

 onClick="JSFUNC(['source1','source2'], ['dest1','dest2']);"

¤Î¤è¤¦¤ÊÊ£¿ô¤ÎÆþ½ÐÎϤËÂбþ¤¹¤ë¤Ë¤Ï¡¢Perl¤Î¥µ¥Ö¥ë¡¼¥Á¥ó(PERLFUNC)¤ÇÊ£¿ô¤ÎÃͤò°ú¿ô¤Ç¼õ¤±¼è¤ê¡¢ÇÛÎó¤ÇÃͤòÊÖ¤»¤Ð£Ï£Ë¤Ç¤¹¡£

 sub perl_func {
        my $source1 = shift;
        my $source2 = shift;
        my $output1 = "source1¤Ë" . $source1 . "¤¬ÆþÎϤµ¤ì¤Þ¤·¤¿";
        my $output2 = "source2¤Ë" . $source2 . "¤¬ÆþÎϤµ¤ì¤Þ¤·¤¿";
        Jcode::convert(\$output1, 'utf8', 'euc');
        Jcode::convert(\$output2, 'utf8', 'euc');
        return ($output1, $output2);
 }

Î㤨¤Ð¡¢¾å¤Î¤è¤¦¤Ë¥µ¥Ö¥ë¡¼¥Á¥ó¤òÄêµÁ¤¹¤ë¤È¡¢$source1¡¢$source2¤Ë¤½¤ì¤¾¤ìsource1¡¢source2¤Ç¤ÎÆþÎÏÃͤ¬³ÊǼ¤µ¤ì¡¢$output1¤ÎÃͤ¬dest1¤Ë¡¢$output2¤ÎÃͤ¬dest2¤ËÊÖ¤µ¤ì¤Þ¤¹¡£

***Æȼ«¤ÎJavaScript¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤ËPerl¥µ¥Ö¥ë¡¼¥Á¥ó(PERLFUNC)¤ÎÊÖ¤êÃͤòÅϤ¹ [#qa2cb716]

Æȼ«¤ËÄêµÁ¤·¤¿JavaScript¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤ËPerl¥µ¥Ö¥ë¡¼¥Á¥ó(PERLFUNC)¤ÎÊÖ¤êÃͤòÅϤ¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

  onClick="exported_func(['input1'],[js_process_func]);"

¾å¤Îjs_process_func¤¬ÊÖ¤êÃͤòÅϤ¹JavaScript¥Õ¥¡¥ó¥¯¥·¥ç¥ó̾¤Ç¤¹¡£id¤ò»ØÄꤹ¤ë»þ¤È°Û¤Ê¤ê¡¢'¤Ç³ç¤ê¤Þ¤»¤ó¡£('¤Ç³ç¤ë¤Èid¤È¤ß¤Ê¤·¤ÆCGI::Ajax¤ÏÆ°ºî¤·¤Þ¤¹¡Ë

Perl¥µ¥Ö¥ë¡¼¥Á¥ó(PERLFUNC)¤¬Ê£¿ôÃÍ(=ÇÛÎó)¤òÊÖ¤¹¾ì¹ç¤Ïjs_process_func()¤ÎÊý¤Çarguments¥ª¥Ö¥¸¥§¥¯¥È¤òÍøÍѤ·¤Æ¼èÆÀ¤·¤Æ¤¢¤²¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

 function js_process_func () {
   var input1 = arguments[0];
   var input2 = arguments[1];
   // ¼«Ê¬¤ÇgetElementById¤Ç½ÐÎÏÀè¤òÆÃÄꤷ¤ÆÃͤò¥»¥Ã¥È¤¹¤ëɬÍ×¥¢¥ê
   document.getElementById('outputdiv').innerHTML = input1 + '¤È' + input2;
 }

***³°Éô¤Î¥¹¥¯¥ê¥×¥È¤Ë¥ê¥¯¥¨¥¹¥È¤¹¤ë [#j13f3c71]

³°Éô¤Î¥¹¥¯¥ê¥×¥È¤ËAjax¤Î¥ê¥¯¥¨¥¹¥È¤òÈô¤Ð¤·¤Æ¼Â¹Ô¤µ¤»¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¤½¤Î°Ù¤Ë¤Ï¡¢CGI::Ajax¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ë»ØÄꤹ¤ë¥Þ¥Ã¥Ô¥ó¥°¤ÇPerl¥µ¥Ö¥ë¡¼¥Á¥ó¥ê¥Õ¥¡¥ì¥ó¥¹¤Ç¤Ï¤Ê¤¯¡¢Âоݥ¹¥¯¥ê¥×¥È¤ÎURL¤ò»ØÄꤷ¤Þ¤¹¡£

  my $url = 'scripts/other_script.pl';
  my $cjx = new CGI::Ajax( 'external' => $url );

¥Ú¡¼¥¸Â¦¤Îµ­½Ò¤Ï¤³¤ì¤Þ¤Ç¤ÈƱÍͤǤ¹¡£

  onClick="external(['input1','input2'],['resultdiv']);"

³°Éô¥¹¥¯¥ê¥×¥È(scripts/other_script.pl)¤Ç¤ÏCGI¥ª¥Ö¥¸¥§¥¯¥È¤Îparam¥á¥½¥Ã¥É¤«¤éargs¥­¡¼¤òÍѤ¤¤Æinput1¡¢input2¤ÎÆþÎϤò¼èÆÀ¤Ç¤­¤Þ¤¹¡£

 #!/usr/bin/perl
 # scripts/other_script.pl¤ÎÎã
 
 use strict;
 use CGI;
 
 my $cgi = new CGI;
 my @input = $cgi->param('args');
 
 print $cgi->header();
 print "input length is " . @input . " . \n";

²¾¤Ë¾å¤Î¥¹¥¯¥ê¥×¥È¤òscripts/other_script.pl¤È¤¹¤ë¤È¡¢¼Â¹Ô·ë²Ì¤È¤·¤Æinput1¡¢input2¤¬¶¦¤ËÆþÎϤµ¤ì¤Æ¤¤¤ì¤Ð¡Öinput length is 2 .¡×¤È¤¤¤¦Ê¸»úÎó¤¬resultdiv¤ËÊÖ¤µ¤ì¤Þ¤¹¡£

***GET / POST ¤ÎÀÚ¤êÂؤ¨ [#o9ff7151]

ÈóƱ´üÄÌ¿®¤ò¼Â¹Ô¤¹¤ë»þ¤Ë¥ê¥¯¥¨¥¹¥È¤Ë»È¤¦Method¤òGET / POST¤«¤éÁª¤Ö¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

GET¤ò»È¤¦»þ¤Ï

  onClick="exported_func(['input1'],['result1'], 'GET');"

POST¤ò»È¤¦»þ¤Ï

  onClick="exported_func(['input1'],['result1'], 'POST');"

¤È¤¤¤¦¤Õ¤¦¤ËJavaScript¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤ÎÂ裳°ú¿ô¤Ë»ØÄꤷ¤Þ¤¹¡£

¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏGET¤¬»È¤ï¤ì¤Þ¤¹¡£

***´¶ÁÛ [#ad74e6e2]

JavaScript¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤Ø¤Î°ú¿ôɽ¸½¤Ë¤è¤Ã¤ÆPerl¥µ¥Ö¥ë¡¼¥Á¥ó¤Ë¥·¡¼¥à¥ì¥¹¤Ëinput¥¿¥°¤ÎÆþÎÏÃͤò°ú¤­ÅϤ»¤ë¤Î¤ÏÊØÍø¡£¥µ¥Ö¥ë¡¼¥Á¥ó¤ÎÌá¤êÃͤ¬¤½¤Î¤Þ¤ÞJavaScript¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤Î¥¢¥¦¥È¥×¥Ã¥È¤Ë»ØÄꤷ¤¿HTML¥¿¥°¤ËÊÖ¤µ¤ì¤ë¤Î¤âľ´¶Åª¤Ç¤ï¤«¤ê¤ä¤¹¤¤¤È´¶¤¸¤Þ¤·¤¿¡£

°ìÈÖ´ò¤·¤¤¤Î¤Ï¡¢¡ØPerl¥µ¥Ö¥ë¡¼¥Á¥ó¡Ù¤Ë¥¤¥Ù¥ó¥È¤ò¥Þ¥Ã¥Ô¥ó¥°¤Ç¤­¤ë¤³¤È¤Ç¤¹¡£ÈóƱ´ü¤ËÆþÎÏ¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¤è¤¦¤ÊAjax¤ò¹Í¤¨¤ë¾ì¹ç¤Ë¡¢ÆþÎÏ¥Á¥§¥Ã¥¯¤Î¤ß¹Ô¤¦¤è¤¦¤Ê¥¹¥¯¥ê¥×¥È¤ò¤ï¤¶¤ï¤¶ÍÑ°Õ¤·¤Ê¤¯¤Æ¤¹¤à¤Î¤Ï¥¤¥¤¤Ç¤¹¡£¥µ¥Ö¥ë¡¼¥Á¥ó¤òÍÑ°Õ¤¹¤ë¤À¤±¤Ç¤¤¤¤¤ó¤À¤«¤éÀ¨¤¯ÊØÍø¡£ÂçÄñ¤Î¥ì¥¬¥·¡¼¤Ç¤ÏÆþÎÏ¥Á¥§¥Ã¥¯¤Î¥í¥¸¥Ã¥¯¤Ï´û¤Ë¥µ¥Ö¥ë¡¼¥Á¥ó²½¤µ¤ì¤Æ¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤Ã¤¿¤ê¤¹¤ë¤ï¤±¤Ç¡¢¥µ¥Ö¥ë¡¼¥Á¥ó¤Ë¥Þ¥Ã¥×¤Ç¤­¤ë¤È¤¤¤¦¤³¤È¤Ï¤³¤Î»ñ»º¤ò³Ú¤ËÍøÍѤǤ­¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤è¤Í¡£

¿´ÇۤʤΤϺ£¸å¤ÎÂбþ¤ÈȯŸ¤Ç¤·¤ç¤¦¤«¡£prototype.js¤¬Î´À¹¤Îºòº£¡¢prototype.js¤È¤Þ¤Ã¤¿¤¯¤«¤¹¤é¤Ê¤¤¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤϾ¯¤·É԰¤ˤϤʤê¤Þ¤¹^^;
**»²¹Í [#n347ad27]

-[[CGI-Ajax>http://search.cpan.org/~bct/CGI-Ajax-0.697/]]

#blikifooter(¿ÊÃÏ);


tag:[[Ajax>tag/Ajax]], [[Perl>tag/Perl]], [[CPAN>tag/CPAN]]


¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS

¥¢¡¼¥¯¥¦¥§¥Ö¤Î¥µ¡¼¥Ó¥¹¤ä¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¤³¤Á¤é