#!/usr/bin/jperl5 ######################################################### # makedbmdic(perl5) version 5.0 1995.10.17 # # This software is placed in the public domain. # # Written by Masaaki Sato # Matsushita Research Institute Tokyo, Inc. # Human Interface Research Laboratry # Tel 044-911-6351 # Fax 044-911-8760 ######################################################### # Author: Masaaki Sato # Maintainer: Mikio Nakajima # Version: $Id: makedbmdic5,v 1.2 2013/05/30 14:44:24 skk-cvs Exp $ # Keywords: jisyo, dbm, gdbm, perl # Last Modified: $Date: 2013/05/30 14:44:24 $ use Getopt::Std; getopts('BG'); our($opt_B, $opt_G); if (defined $opt_B){ use DB_File; use Fcntl; }elsif (defined $opt_G){ use GDBM_File; } $dot=20; $line=$dot * 50; ($dicname) = @ARGV; die "Usage: makedbmdic [-B|G] dict-file-name\n" unless $dicname; open(DIC,$dicname); if (defined $opt_B){ tie %dbm_dic, DB_File, "$dicname.db", O_RDWR|O_CREAT, 0644, $DB_HASH ; }elsif (defined $opt_G){ tie %dbm_dic, GDBM_File, "$dicname.gdbm", GDBM_NEWDB|GDBM_FAST, 0644, 0 ; }else{ dbmopen(%dbm_dic,$dicname,0644); } print "\nmakedbmdic by msatoh\@mrit.mei.co.jp\n"; print "Make dbm format dic from SKK dic.\n"; print "The numbers mean how many lines have processed.\n"; print "A dot mean $dot lines, as you see.\n\n"; $|=1; $max=0; while(){ $max++; } seek(DIC,0,0); $count=0; while(){ ($key,$cont)=m#^(.+)\s(/.+/)$#; $dbm_dic{$key} = $cont; $count++; print "." if ($count % $dot) == 0; if (($count % $line) == 0){ $per = $count*100/$max; printf("%d[%5.2f%%]\n",$count,$per); } } if (defined $opt_B || defined $opt_G){ untie(%dbm_dic); }else{ dbmclose(%dbm_dic); } print " done.\n"; # end of makedbmdic5