#! /usr/local/bin/perl # # LHA で作成された「自己解凍形式」のファイルの余分な # ヘッダ部分を削って、ふつーの LZH ファイルにする。 # 仕様書とか見たわけではないので、かなりいい加減 (^_^; # $verb = 'on'; @Z = ( "\x00", "\x2d", 'l', 'h', "[0-9]", "\x2d", ); foreach $file ( @ARGV ) { if(open(I,$file) && open(O,">${file}.lzh")) { if($verb eq 'on') { print STDERR "$file .. "; } $za = ''; $mode = 0; $ok = 0; while(0 < read(I,$ca,1)) { if($ok < 1) { if($ca =~ /$Z[$mode]/) { if($mode < 1) { $za .= $oca; } $mode++; if($#Z < $mode) { $ok = 1; print O $za . $ca; } $za .= $ca; } elsif(0 < $mode) { $mode = 0; undef $za; } $oca = $ca; } else { print O $ca; } } close(O); close(I); if($verb eq 'on') { print STDERR "Done.\n"; } } } exit;