共用サーバで使用可能なPerlモジュールを一覧取得する

By |5月 7, 2009|未分類, |


自分の場合そもそも普段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]