Walrus,Digit. | 一覧 | 検索 | 更新履歴(RSS) | 新規作成
はてなブックマークに追加 はてなブックマークを表示 編集 | 編集(管理者用) | 差分

Perlモジュール/File::Extension::Validate

編集

ファイル拡張子の検証するためのモジュール。

333333r5t6]y [fgggggggptyulk6,6絵rr6ん@w4

インストール

編集

以下のファイルをダウンロードしてください。

展開すると、次のようなファイル構成が現れます。

File/
 +-- Extension/
      +-- Validate.pm

これを、Perlのモジュール検索パスの中においてください。

チェック

以下のようにします。

use File::Extension::Validate;
my $file = 'file1.tar';
if (File::Extension::Validate->validate($file) == 0) {
    print "$file has invalid extension!";
    if (my $ext = File::Extension::Validate->suggest($file)) {
        print "'$ext' is my suggestion.";
    }
}

validateはファイルの先頭部が、拡張子に対して妥当なヘッダになっているかを確認します。 suggestは、逆にファイルの先頭部から、妥当な拡張子を調べます。 ただし、先頭部のほとんどの場合ごく一部を見てチェックをしますので、suggestの精度はあまり当てにならないレベルです。

File::Extension::Validateは、validate_extension、suggest_extensionの二つのメソッドをエクスポートできます。これは非OO的に、関数のように使えるメソッドです。 エクスポート対象は、":all"タグを指定すればどちらも有効になります。

 use File::Extension::Validate qw(:all);
 my $file = 'file1.tar';
 if (&validate_extension($file) == 0) {
     print "$file has invalid extension!";
     if (my $ext = &suggest_extension($file)) {
         print "'$ext' is my suggestion.";
     }
 }

対象ファイル形式

File::Extension::Validate 0.04版は以下のファイル形式・拡張子に対応しています。

文書doc、xls、ppt(※1)、pdf
画像bmp、gif、jpg/jpeg、mng、pcd、png、psd、ppm、tif、xbm、xpm、swf
動画、音楽asf/wmv、ogm
圧縮ファイルbz2/tbz、cab、gca、gz/tgz、ish、lzh、rar、sit、tar、yz1、zip

おそらくもっと多くの形式に対応する必要があるでしょう。 ファイル形式の判定方法についてご存知のものがあれば、ぜひお教えください。

※1 : doc、xls、pptは共通の文字列をファイル先頭に持つようです。このため、File::Extension::Validateではこれらの区別はできていません。

謝辞

このモジュールのコンセプトと、画像ファイルの形式判定のための正規表現はImage::Sizeモジュールによります。作成者およびコントリビュータ他の方々に心より感謝いたします。

このモジュールを作成するきっかけになった、Wikiへの警鐘を鳴らされたIPA、JVNそのほかの関係者の方々に心より感謝いたします。

コメント

コメントスパムがひどいためこのページのコメント欄を削除しました。コメントしたい方は暫定的に「掲示板」のページへお願いいたします。