共用サーバで使用可能なPerlモジュールを一覧取得する
自分の場合そもそも普段Perlを触る機会があまりなくて、たまに簡単なPerl操作が必要な時につまってしまう場合が多いです。
よくあるのが問い合わせフォーム関係で、
あまり大規模ではないサイトの場合、一昔前にフリー配布されたPerlベースのスクリプトで動いてるものが多い、気がする。
弊社の場合、それらのフォームからの問い合わせ内容を外部システムと連携するためにPOSTでSSL送信、
みたいな開発をすることが多い。だいたいこんなことをする。
Perl で HTTPS を利用した POST
そのときいつも困るのがPerlのモジュールの確認。
お客さんのサーバが共用サーバであることが多く、SSHが使えずコマンド操作ができず、
どんなモジュールがインストールされているかわからない。
で、色々さがしてこんなスクリプト発見。これは便利。
使用可能なモジュールの一覧取得
[sourcecode language=’html’]
#!/usr/bin/perl
print “Content-Type: text/plain\n\n”;
use strict;
my %mod_list;
listup($_) for grep {$_ ne ‘.’} @INC;
print “$_\n” for sort keys %mod_list;
sub listup {
my ($base, $path) = @_;
(my $mod = $path) =~ s!/!::!g;
opendir DIR, “$base/$path” or return;
my @node = grep {!/^\.\.?$/} readdir DIR;
closedir DIR;
foreach (@node) {
if (/(.+)\.pm$/) { $mod_list{“$mod$1”} = 1 }
elsif (-d “$base/$path$_”) { listup($base, “$path$_/”) }
}
}
[/sourcecode]