{"id":147,"date":"2007-05-09T02:47:03","date_gmt":"2007-05-08T17:47:03","guid":{"rendered":"https:\/\/deskplate.net\/blog\/2007\/05\/09\/perl%e3%80%80%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%e3%81%ae%e4%b8%80%e8%a6%a7\/"},"modified":"2007-05-09T02:47:03","modified_gmt":"2007-05-08T17:47:03","slug":"perl%e3%80%80%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%e3%81%ae%e4%b8%80%e8%a6%a7","status":"publish","type":"post","link":"https:\/\/deskplate.net\/blog\/archives\/147","title":{"rendered":"Perl\u3000\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4e00\u89a7"},"content":{"rendered":"<p>\u30ed\u30ea\u30dd\u30c3\u30d7\u3067\u306f\u3053\u3046\u306a\u3063\u305f<br \/>\n<a href=\"http:\/\/drunk.chips.jp\/cgi\/module.pl\" target=\"_blank\" rel=\"noopener\">\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af<\/a><br \/>\n#!\/usr\/bin\/perl<br \/>\nuse strict;<br \/>\nuse CGI;<br \/>\nmy $q = CGI->new;<br \/>\nmy @modules = ();<br \/>\nforeach my $base_dir ( @INC ) {<br \/>\n\u3000my @dir = ( undef );<br \/>\n\u3000while ( @dir ) {<br \/>\n\u3000\u3000my $dir = pop @dir;<br \/>\n\u3000\u3000my $open = $base_dir;<br \/>\n\u3000\u3000$dir and $open .= &#8220;\/$dir&#8221;;<br \/>\n\u3000\u3000opendir ( DIR, $open );<br \/>\n\u3000\u3000my @object = grep { !\/^\\.\/ } readdir ( DIR );<br \/>\n\u3000\u3000closedir ( DIR );<br \/>\n\u3000\u3000push @dir, map { &#8220;$dir\/$_&#8221; } grep { -d &#8220;$base_dir\/$dir\/$_&#8221; } @object;<br \/>\n\u3000\u3000push @modules, map { &#8220;$dir\/$_&#8221; } grep { \/\\.pm$\/ } @object;<br \/>\n\u3000}<br \/>\n}<br \/>\nmap { s\/^\\\/\/\/ } @modules;<br \/>\nmy %modules = map { $_=>1 } @modules;<br \/>\n@modules = sort keys %modules;<br \/>\nmy $modules = {};<br \/>\nforeach ( @modules ) {<br \/>\n\u3000my @temp = split \/\\\/\/;<br \/>\n\u3000my $eval = &#8216;$modules->&#8217;.join(&#8216;->&#8217;,map{ &#8216;{&#8220;&#8216;.$_.'&#8221;}&#8217; }@temp).&#8217;= 1;&#8217;;<br \/>\n\u3000eval $eval;<br \/>\n}<br \/>\nprint $q->header;<br \/>\nprint $q->start_html(-title=>&#8217;modules in this Perl.&#8217;);<br \/>\nprint hashref2list($modules);<br \/>\nprint $q->end_html;<br \/>\nsub hashref2list {<br \/>\n\u3000my $hashref = shift;<br \/>\n\u3000my $parent = shift;<br \/>\n\u3000my @keys = keys %{$hashref};<br \/>\n\u3000my @file = ();<br \/>\n\u3000my @dir = ();<br \/>\n\u3000foreach ( @keys ) {<br \/>\n\u3000\u3000if ( ref $hashref->{$_} ) {<br \/>\n\u3000\u3000\u3000push @dir, $_;<br \/>\n\u3000\u3000} else {<br \/>\n\u3000\u3000\u3000push @file, $_;<br \/>\n\u3000\u3000}<br \/>\n\u3000}<br \/>\n\u3000@dir = sort @dir;<br \/>\n\u3000map { s\/\\.pm$\/\/ } @file;<br \/>\n\u3000@file = sort @file;<br \/>\n\u3000return $q->ul(<br \/>\n\u3000\u3000$q->li([map { &#8220;$parent$_&#8221; } @file]),<br \/>\n\u3000\u3000$q->li([map { $_.&#8217;::&#8217;.hashref2list($hashref->{$_}, $parent.$_.&#8217;::&#8217;) } @dir])<br \/>\n\u3000);<br \/>\n}<br \/>\nexit(0);<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30ed\u30ea\u30dd\u30c3\u30d7\u3067\u306f\u3053\u3046\u306a\u3063\u305f \u3053\u3053\u3092\u30af\u30ea\u30c3\u30af<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,17],"tags":[],"class_list":["post-147","post","type-post","status-publish","format-standard","hentry","category-perl","category-17"],"_links":{"self":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts\/147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/comments?post=147"}],"version-history":[{"count":0,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts\/147\/revisions"}],"wp:attachment":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/media?parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/categories?post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/tags?post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}