{"id":3230,"date":"2013-12-23T17:30:27","date_gmt":"2013-12-23T08:30:27","guid":{"rendered":"http:\/\/www.achiachi.net\/nikki\/?p=3230"},"modified":"2015-02-25T09:09:10","modified_gmt":"2015-02-25T00:09:10","slug":"perl%e5%85%a5%e5%8a%9b%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0postget%e3%81%8b%e3%82%89%e3%81%ae%e5%8f%97%e3%81%91%e5%8f%96%e3%82%8a","status":"publish","type":"post","link":"https:\/\/www.achiachi.net\/nikki\/perl%e5%85%a5%e5%8a%9b%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0postget%e3%81%8b%e3%82%89%e3%81%ae%e5%8f%97%e3%81%91%e5%8f%96%e3%82%8a.html","title":{"rendered":"Perl:\u5165\u529b\u30d5\u30a9\u30fc\u30e0(POST\/GET)\u304b\u3089\u306e\u53d7\u3051\u53d6\u308a"},"content":{"rendered":"<p>\u3000Perl\u3067\u3088\u304f\u4f7f\u7528\u3059\u308b\u5165\u529b\u30d5\u30a9\u30fc\u30e0(POST\u3084GET)\u304b\u3089\u5024\u3092\u53d7\u3051\u53d6\u308b\u6642\u306e\u51e6\u7406\u3092\u8abf\u3079\u3066\u307f\u307e\u3057\u305f\u3002<br \/>\n<!--more--><\/p>\n<p><strong>\u203b\u30d7\u30ed\u30b0\u30e9\u30e0\u521d\u5fc3\u8005\u306e\u305f\u3081\u3001\u3053\u306e\u30da\u30fc\u30b8\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u30bd\u30fc\u30b9\u306f\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u306a\u3044\u4e8b\u304c\u3042\u308a\u307e\u3059\u3054\u6ce8\u610f\u4e0b\u3055\u3044\u3002<br \/>\n\uff08\u3042\u3063\u3061\u3053\u3063\u3061\u306e\u30b5\u30a4\u30c8\u306e\u60c5\u5831\u3092\u5bc4\u305b\u96c6\u3081\u3066\u308b\u306e\u3067\u601d\u308f\u306c\u4e0d\u5177\u5408\u304c\u3042\u308b\u304b\u3082\uff09<\/strong><\/p>\n<p>\u3000POST\u30fbGET \u4e21\u65b9\u3068\u3082\u53d6\u5f97\u53ef\u80fd(\u540c\u6642\u306f\u7121\u7406\u30fb\u6392\u4ed6)\u3067\u30d5\u30a1\u30a4\u30eb\u3082\u6271\u3048\u307e\u3059\u3002<br \/>\n\u3000GET\u307e\u305f\u306fPOST\u306e\u30c7\u30fc\u30bf\u3092\u53d7\u3051\u53d6\u308b\u3068\u3001\u5909\u6570 $form{&#8220;\uff0a&#8221;} (\uff0a\u306f\u9001\u4fe1\u6642\u306b\u4f7f\u3063\u305fname\u306e\u5024)\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u3000\u6280\u8853\u4e0d\u8db3\u3067\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306b\u306f\u8272\u3005\u5236\u9650\u304c\u3042\u308a\u307e\u3059\u3002<br \/>\n\u3000\u30fb\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u6642\u306f\u3001form\u306b\u300cmethod=&#8221;post&#8221; ENCTYPE=&#8221;multipart\/form-data&#8221;\u300d\u3092\u8a18\u8f09\u304c\u5fc5\u8981\uff08\u30d5\u30a1\u30a4\u30eb\u304c\u7121\u3044\u6642\u306f\u4e0d\u8981\uff09<br \/>\n\u3000\u30fb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b input\u30bf\u30b0\u306f &lt;input type=&#8221;file&#8221; name=&#8221;FILE\uff1f&#8221;&gt;  (name\u5024\u306fFILE\u3067\u59cb\u307e\u308b\u4e8b\uff1f\u90e8\u5206\u306f\u4efb\u610f)<br \/>\n\u3000\u30fb\u30d5\u30a1\u30a4\u30eb\u4ee5\u5916\u306einput\u30bf\u30b0\u306b\u306f name=&#8221;FILE\uff1f&#8221; \u306f\u4f7f\u7528\u7981\u6b62\uff01<br \/>\n\u3000\u30fb\u30d5\u30a1\u30a4\u30eb\u306f\u5909\u6570 $formfile{&#8220;FILE\uff1f&#8221;}\u306b\u30d5\u30a1\u30a4\u30eb\u672c\u4f53\u3001$form{&#8220;FILE\uff1f&#8221;}\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002\uff08\uff0a\u306f\u9001\u4fe1\u6642\u306b\u4f7f\u3063\u305f\u3082\u306e\uff09\u3001$formfile\u3092binmode\u3067\u30b5\u30fc\u30d0\u30fc\u4e0a\u306b\u66f8\u304d\u51fa\u305b\u3070\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n<p>\u3000\u6ce8\u610f\uff1atextare\u30bf\u30b0\u3067\u3001Windows\u304b\u3089\u9001\u3089\u308c\u305f\u6539\u884c\u30b3\u30fc\u30c9\u306f\uffe5r\uffe5n\u3068\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u305d\u306e\u307e\u307etextare\u306b\u51fa\u529b\u3059\u308b\u3068\uff12\u91cd\u6539\u884c\u306b\u306a\u308a\u307e\u3059\u300c$str =~ s\/\\r\\n\/\\n\/g;\u300d\u306a\u3069\u3067\u6539\u884c\u30b3\u30fc\u30c9\u3092\u51e6\u7406\u3057\u3066\u4e0b\u3055\u3044\u3002<\/p>\n<p>\u4fee\u6b63\u5c65\u6b74<br \/>\n2013\/09\/01\uff1a\u30c7\u30b3\u30fc\u30c9\u51e6\u7406\u300c$value =~ s\/%([0-9A-Fa-f][0-9A-Fa-f])\/pack(&#8220;C&#8221;, hex($1) )\/eg;\u300d\u304c\u9045\u3044\u306e\u3067\u5909\u66f4<br \/>\n2013\/12\/23\uff1a\u6b63\u3057\u304f\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u51fa\u6765\u306a\u3044\u4e8b\u304c\u3042\u3063\u305f\u306e\u3092\u4fee\u6b63(\u5883\u754c\u5024\u306e\u53d6\u5f97\u30df\u30b9)<\/p>\n<p><code><\/p>\n<pre>\r\nmy(%form,%formfile);\r\nmy($input,$data,$name,$value,%count,$flag);\r\nmy($boundary,$eind,$len,$buffer,@datas,$dat,$keyid1,$keyid2,$keyid3,$keyid4,$rname,$rvalue,$fname,@filevals);\r\n#POST\/GET\u5024\u53d6\u5f97\r\nif ($ENV{'REQUEST_METHOD'} eq \"POST\"){\r\n\tif ($ENV{'CONTENT_TYPE'} =~ m\/multipart\\\/form-data\/){\t#POST\u30d0\u30a4\u30ca\u30ea\r\n\t\t#\u5883\u754c\u5024\u3092CONTENT_TYPE\u304b\u3089\u8aad\u307f\u51fa\u3057\r\n\t\t($boundary) = $ENV{'CONTENT_TYPE'} =~ \/boundary=\"([^\"]+)\"\/;\r\n\t\t unless($boundary) { ($boundary) = $ENV{'CONTENT_TYPE'} =~ \/boundary=(\\S+)\/;}\r\n\t\t $eind=index($boundary,',');\r\n\t\tif ($eind>0){$boundary = substr($boundary,0,$eind);}\r\n\t\t$boundary = \"--\".$boundary;\r\n\t\t#\u30c7\u30fc\u30bf\u53d6\u5f97\r\n\t\tbinmode(STDIN);\r\n\t\tread(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});\r\n\t\t#\u5206\u5272\r\n\t\t@datas=split(\/$boundary\/,$buffer);\r\n\t\tforeach $dat(@datas){\r\n\t\t\tif ($dat =~ \/Content-Disposition: form-data; name\/i){\r\n\t\t\t\t$keyid1=index($dat,'name');\r\n\t\t\t\t$keyid2=index($dat,'\"',$keyid1+6);\r\n\t\t\t\t$rname=substr($dat,$keyid1+6,$keyid2-$keyid1-6);\r\n\t\t\t\t$rvalue=substr($dat,$keyid2+2);\r\n\t\t\t\t#\u30d5\u30a9\u30fc\u30e0\u540d\u306bFILE\u304c\u3042\u308b\u5834\u5408\u306f\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3068\u3057\u3066\u51e6\u7406\r\n\t\t\t\t#\u203b\u9006\u306bFILE\u304c\u3042\u308b\u3068\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3068\u3057\u3066\u51e6\u7406\u3055\u308c\u308b\u306e\u3067\u30d5\u30a9\u30fc\u30e0\u4f5c\u6210\u6642\u306f\u6ce8\u610f\r\n\t\t\t\tif (substr($rname,0,4) eq 'FILE'){\t\t\t#\u30d5\u30a1\u30a4\u30eb\r\n\t\t\t\t\t#\u4e0d\u8981\u306a\u30c7\u30fc\u30bf\u3092\u9664\u304f\r\n\t\t\t\t\t$keyid3=index($rvalue,'filename=\"');\r\n\t\t\t\t\t$keyid4=index($rvalue,'\"',$keyid3+10);\r\n\t\t\t\t\t$fname=substr($rvalue,$keyid3+10,$keyid4-$keyid3-10);\r\n\t\t\t\t\t$fname=~ s\/\\n\/\/ig;\r\n\t\t\t\t\t$fname=~ s\/\\r\/\/ig;\r\n\t\t\t\t\t@filevals=split(\/\\r\\n\\r\\n\/,$rvalue);\r\n\t\t\t\t\tchop $filevals[1];\r\n\t\t\t\t\tchop $filevals[1];\r\n\t\t\t\t\t$fvalue=$filevals[1];\r\n\t\t\t\t\t$form{$rname}=$fname;\r\n\t\t\t\t\t$formfile{$rname}=$fvalue; \r\n\t\t\t\t}else{\t\t\t\t\t\t\t\t\t\t#\u30d5\u30a1\u30a4\u30eb\u5916\r\n\t\t\t\t\t#\u672b\u5c3e\u306eCR\/LF\u30b3\u30fc\u30c9\u3092\u524a\u9664\r\n\t\t\t\t\twhile((substr($rvalue,-1,1) =~ \/\\r\/) || (substr($rvalue,-1,1) =~ \/\\n\/)){\r\n\t\t\t\t\t\tchop $rvalue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t#\u5148\u982d\u306eCR\/LF\u30b3\u30fc\u30c9\u3092\u524a\u9664\r\n\t\t\t\t\twhile((substr($rvalue,0,1) =~ \/\\r\/) || (substr($rvalue,0,1) =~ \/\\n\/)){\r\n\t\t\t\t\t\t$rvalue=substr($rvalue,1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$form{$rname}=$rvalue; \r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t$flag=1;\t#return(1);\r\n\t}else{\t\t\t\t\t\t\t\t\t\t\t\t\t#POST\u30c6\u30ad\u30b9\u30c8\r\n\t\tread(STDIN, $input, $ENV{'CONTENT_LENGTH'});\r\n\t\t$flag=2;\r\n\t}\r\n}else{\t\t\t\t\t\t\t\t\t\t\t\t\t\t#GET\u30c6\u30ad\u30b9\u30c8\r\n\t$input = $ENV{'QUERY_STRING'};\r\n\t$flag=2;\r\n}\r\n#\u30c7\u30fc\u30bf\u5206\u5272\r\nif ($flag==2){\r\n\tforeach $data (split(\/&\/, $input)) {\r\n\t\t($name, $value) = split(\/=\/, $data);\r\n\t\t#URL\u30c7\u30b3\u30fc\u30c9\r\n\t\t$value =~ tr\/+\/ \/;\r\n\t\t$value =~ s\/%([0-9A-Fa-f][0-9A-Fa-f])\/pack('H2', $1)\/eg;\r\n\t\t#\u767b\u9332\r\n\t\t$count{\"$name\"}=$count{\"$name\"}+1;\r\n\t\tif ($count{\"$name\"} > 1){\r\n\t\t\t$form{\"$name\"} = $form{\"$name\"}.\"\\0\".$value;\r\n\t\t}else{\r\n\t\t\t$form{\"$name\"} = $value;\r\n\t\t}\r\n\t}\r\n}\r\n<\/pre>\n<p><\/code><\/p>\n<hr \/>\n<p>\u4f7f\u3044\u65b9\u304c\u308f\u304b\u308a\u306b\u304f\u3044\u306e\u3067\u6b21\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u3072\u3063\u3064\u3051\u3066\u5b9f\u884c\u3057\u3066\u307f\u3066\u3002<br \/>\n\u203b\u5148\u982d\u306b#!\/usr\/local\/bin\/perl\u306f\u5fc5\u8981\u3002\u4e0b\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u4e0a\u3092\u66f8\u3044\u305f\u300c\u5f8c\u300d\u306b\u66f8\u304f\u3053\u3068<\/p>\n<p><code><\/p>\n<pre>\r\n$form{'d2'} =~ s\/\\r\\n\/\\n\/g;\t\t#TEXTARE\u3067\u4e8c\u91cd\u6539\u884c\u9632\u6b62\r\nprint \"Content-type: text\/html\\n\\n\";\r\nprint <<\"EOF\";\r\n   &lt;html&gt;&lt;head&gt;\r\n   &lt;META http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"&gt;\r\n   &lt;title&gt;\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b0\u30e9\u30e0&lt;\/title&gt;&lt;\/head&gt;\r\n\r\n   &lt;body&gt;\r\n   &lt;form method=\"post\" action=\"\" ENCTYPE=\"multipart\/form-data\"&gt;\r\n   d1&lt;input type=\"text\" name=\"d1\" value=$form{'d1'} &gt;&lt;br&gt;\r\n   d2&lt;textarea name=\"d2\"&gt;$form{'d2'}&lt;\/textarea&gt;\u2190\u2191\u9069\u5f53\u306b\u6587\u5b57\u3092\u5165\u529b&lt;br&gt;\r\n   FILE1&lt;input type=\"file\" name=\"FILE1\"&gt;&lt;br&gt;\r\n   \u2191\u3068\u308a\u3042\u3048\u305a\u753b\u50cf\u3092\u30a2\u30c3\u30d7\u3057\u3066\u307f\u3066\u4e0b\u3055\u3044\u3002&lt;br&gt;\r\n   \u203b\u3053\u306e\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u30d5\u30a1\u30a4\u30eb\u540d\u306b\u30b9\u30da\u30fc\u30b9\u306a\u3069\u7279\u6b8a\u304c\u3042\u308b\u3068\u30a8\u30e9\u30fc\u304c\u51fa\u307e\u3059\u3002&lt;br&gt;\r\n   &lt;input type=\"submit\" value=\"\u9001\u4fe1\"&gt;\r\n   &lt;\/form&gt;\r\n   &lt;hr&gt;\r\n\r\n   \u7d50\u679c\uff08\u5b9f\u884c\u5f8c\u8868\u793a\u3055\u308c\u307e\u3059\uff09&lt;br&gt;\r\n   d1=\u300c$form{'d1'}\u300d&lt;br&gt;\r\n   d2=\u300c$form{'d1'}\u300d&lt;br&gt;\r\n   FILE1=\u300c$form{'FILE1'}\u300d(\u30d5\u30a1\u30a4\u30eb\u540d)&lt;br&gt;\r\n   &lt;img src=$form{'FILE1'}&gt;(\u753b\u50cf)&lt;br&gt;\r\n   &lt;\/body&gt;\r\n   &lt;\/html&gt;\r\nEOF\r\n\r\nif ($form{'FILE1'}){\r\n   open(OUT, \">$form{'FILE1'}\");\r\n   binmode(OUT);\r\n   print OUT $formfile{'FILE1'};\r\n   close(OUT);\r\n}\r\n<\/pre>\n<p><\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3000Perl\u3067\u3088\u304f\u4f7f\u7528\u3059\u308b\u5165\u529b\u30d5\u30a9\u30fc\u30e0(POST\u3084GET)\u304b\u3089\u5024\u3092\u53d7\u3051\u53d6\u308b\u6642\u306e\u51e6\u7406\u3092\u8abf\u3079\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[84],"tags":[93,92],"class_list":["post-3230","post","type-post","status-publish","format-standard","hentry","category-84","tag-cgi","tag-perl"],"_links":{"self":[{"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/posts\/3230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/comments?post=3230"}],"version-history":[{"count":2,"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/posts\/3230\/revisions"}],"predecessor-version":[{"id":3608,"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/posts\/3230\/revisions\/3608"}],"wp:attachment":[{"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/media?parent=3230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/categories?post=3230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.achiachi.net\/nikki\/wp-json\/wp\/v2\/tags?post=3230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}