/usr/local/CPAN/Unicode-Unihan/Makefile.PL
use strict;
use 5.006;
use ExtUtils::MakeMaker;
print "=" x 64, "\n";
print "Preprocessing source text\n";
my $PM = mkdbm("srctxt", "db");
my $PMNAME = "Unicode::Unihan";
my $PMFILE = "Unihan.pm";
$PM->{$PMFILE} = "\$(INST_LIBDIR)/$PMFILE";
print "done.\n";
print "=" x 64, "\n";
WriteMakefile
(
'NAME' => $PMNAME,
'VERSION_FROM' => $PMFILE,
'PREREQ_PM' => {},
'PM' => $PM,
($] >= 5.005 ?
(
ABSTRACT_FROM => $PMFILE, # retrieve abstract from module
AUTHOR => 'Dan Kogai <dankogai@dan.co.jp>',
) : ()),
);
sub mkdbm{
BEGIN{ @AnyDBM_File::ISA = qw(DB_File GDBM_File SDBM_File) ; }
use AnyDBM_File;
use Fcntl;
use File::Path;
my ($srcdir, $dstdir) = @_;
opendir my $dh, $srcdir or die "$srcdir:$!";
-d $dstdir or mkpath [ $dstdir ], 0, 0755 or die "$dstdir:$!";
my %PM = ();
for my $src (grep /\.txt$/io, readdir($dh)){
my $dst = $src; $dst =~ s/\.txt$/.db/o;
$PM{"$dstdir/$dst"} = "\$(INST_LIBDIR)/Unihan/$dst";
if (-f "$dstdir/$dst"){
print "$dstdir/$dst exists. skipping\n";
next;
}
print "Processing $src...";
tie my %hash, 'AnyDBM_File', "$dstdir/$dst", O_RDWR|O_CREAT, 0644
or die "$dstdir/$dst: $!";
my $n = 0;
open my $fh, "$srcdir/$src" or die "$srcdir/$src:$!";
while(<$fh>){
chomp;
my ($uni, $val) = split(/\t/, $_);
$uni or next;
$hash{hex($uni)} = $val;
$n++;
}
close $fh;
print "$n characters processed.\n";
}
close $dh;
return \%PM;
}