#!/usr/bin/perl # This script is published under Perl License # (c)2001 JL4CVB Yuzo $Directory = './PALM/PROGRAMS/Docs'; #このスクリプトから見た相対Directory $PdbFiles = ['*.pdb','*.PDB']; $BackUp = 1; { $0 =~ m/^(.*[\/\\])[^\/\\]*$/; my $scriptDir = $1; $scriptDir =~ s!/[^/]*$!! if(($scriptDir ne '') and (! -d $scriptDir)); chdir("$scriptDir$Directory"); my $pfiles = &globFiles($PdbFiles); foreach $pfName (keys %$pfiles){ open(PDBR,"$pfName"); binmode PDBR; my ($dummy, $tfName); read(PDBR,$dummy,32); # get original file name $dummy =~ /^([^\x00]*)/; $tfName = $1; read(PDBR,$dummy,28); read(PDBR,$dummy,8); my $fileType = unpack("a8",$dummy); if ($fileType ne 'TEXtREAd'){ close(PDBR); next; } read(PDBR,$dummy,8); read(PDBR,$dummy,2); # number of Records my $offset = unpack("n",$dummy) * 8 + 16; read(PDBR,$dummy,$offset); if((-f $tfName) and ($BackUp > 0)){ $tfName =~ /^(.*)\.(.*)$/; my ($fn1, $fn2, $i) = ($1, $2, 0); while(-f "$fn1\-old$i\.$fn2"){ $i++; }; rename("$tfName", "$fn1\-old$i\.$fn2"); } print "$pfName -> $tfName\n"; open(TXTW,">$tfName"); while(){ s/[\r\n]+$//; s/\x00//g; print TXTW "$_\n"; } close(TXTW); close(PDBR); } } sub globFiles(\@){ my $glob = shift; my ($fileList,$g,$f,@l, @fst); use Config; foreach $g (@$glob){ if ($Config{'archname'} =~ /WCE/i){ # Perl for WinCE system("ls -1 $g"); rename("/ls-stdout.txt","glob.tmp"); open(GLOB,"glob.tmp"); while($f = ){ $f =~ s/[\r\n]+$//; $f = lc($f); next if ($f =~ m/(_cnv|\~)$/i); @fst = lstat($f); $fileList->{$f} = $fst[9]; } close(GLOB); unlink('glob.tmp'); }else{ @l = glob($g); foreach $f (@l){ $f = lc($f) if ($Config{'archname'} =~ /MSWin32/); next if ($f =~ m/(_cnv|\~)$/i); @fst = lstat($f); $fileList->{$f} = $fst[9]; } } unlink('glob.tmp'); } return $fileList; }