作者: dune
日時: 2003/12/19(01:57)
極悪です。

機械伯爵 さんの [TSabc:337] びっくり箱スクリプト (お題) から
> ・・・あ、圧縮かける手があったか(汗)

この一言を読んで思い出しました。Compress::LZW という、
PurePerl の圧縮モジュールが CPAN にあります。たぶん、
@nifty のサーバでも動かせるので、掲示板や wiki のデー
タのバックアップに使えるかもしれません。以前から目をつ
けてますが、きっかけがなくてなかなか wiki に組み込めま
せん。END プラグインにして一週間に一回だけ動かすような
ことをしたいのだけど。

--^plzw.pl
use Compress::LZW;
my $file = $ARGV[0];

if($file =~ s/\.z$//){
    $decompress = 1;  # 拡張子 .z なら展開
    $in = "$file.z";
    $out = $file;
}else{
    $decompress = 0;  # 通常は圧縮動作
    $in = $file;
    $out = "$file.z";
}

open(IN,$in) or die qq/"$in" : $!\n/;
open(OUT,">",$out) or die qq/"$out" : $!\n/;
binmode IN;
binmode OUT;

if($decompress){
    print OUT decompress join("",<IN>);
}else{
    print OUT compress join("",<IN>);
}

close IN;
close OUT;
--$

圧縮率はあまり期待できません。

D:% ls -l
-a--rw-     8380 Dec 10 21:24               aka.jpg
-a--rw-      431 Dec 19 00:44               plzw.pl
-a--rw-    10950 Jul 23  1999               yodaka.txt

D:% perl plzw.pl aka.jpg

D:% perl plzw.pl yodaka.txt

D:% ls -l
-a--rw-     8380 Dec 10 21:24               aka.jpg
-a--rw-    15322 Dec 19 01:37 akajpg~1.z    aka.jpg.z
-a--rw-      431 Dec 19 00:44               plzw.pl
-a--rw-    10950 Jul 23  1999               yodaka.txt
-a--rw-     8366 Dec 19 01:37 yodaka~1.z    yodaka.txt.z

D:%

テキストファイル .txt は小さくなってますが、画像 .jpg は
倍近くに膨らんでしまいました(.jpg は rar や zip で圧縮し
ても小さくならないので仕方ない)。
-- 
FZH01112 at nifty.com
http://hpcgi1.nifty.com/dune/gwiki.pl?