1#!%OPT_PATH_PERL% 2# 3# wdnmz.pl - program to output words list from index 4# Version 1.0.6 [06/18/1998] 5# 6# Copyright (C) 1997-1998 Satoru Takabayashi All rights reserved. 7# This is free software with ABSOLUTELY NO WARRANTY. 8# 9 10$VERSION = "1.0.6"; 11$COPYRIGHT = "Copyright (C) 1997-1998 Satoru Takabayashi All rights reserved."; 12 13$SYSTEM = "%OPT_SYSTEM%"; 14$NKF = "%OPT_PATH_NKF%"; 15$LANGUAGE = "%OPT_LANGUAGE%"; # language of messages 16 17$USAGE = <<EOFusage; 18 wdnmz.pl v$VERSION - program to output list of words from index 19 $COPYRIGHT 20 21 usage: wdnmz [-iw] NMZ.i 22 (default): 'word' TAB 'count of the word in index' 23 -w: output list of words for regexp search 24 -i: using NMZ.ii to process 25 usually use: % wdnmz -w NMZ.i > NMZ.w) 26 27EOFusage 28 29&main; 30 31sub main { 32 while ($ARGV[0] =~ /^-/) { 33 $opt_wordlist = 1 if $ARGV[0] =~ /w/;; 34 $opt_with_nmz_ii = 1 if $ARGV[0] =~ /i/;; 35 shift(@ARGV); 36 } 37 if ($LANGUAGE eq "ja" && 38 !$opt_wordlist && ($SYSTEM eq "WIN32") || ($SYSTEM eq "OS2")) { 39 open(SAVEOUT, ">&STDOUT"); 40 open(STDOUT, "|$NKF -s"); 41 } 42 43 die &usage if @ARGV == 0; 44 $OBJFILE = shift (@ARGV); 45 46 open(OBJFILE, $OBJFILE) || die "Can't open $OBJFILE!\n"; 47 binmode(OBJFILE); 48 &getintsize; 49 if ($opt_with_nmz_ii) { 50 open(IDXFILE, $OBJFILE . "i") || die "Can't open $OBJFILEi!\n"; 51 binmode(IDXFILE); 52 while (read(IDXFILE, $idx, $INTSIZE)) { 53 $idx = unpack("I", $idx); 54 seek(OBJFILE, $idx, 0); 55 $_ = <OBJFILE>; 56 read(OBJFILE, $n, $INTSIZE); 57 $nn = unpack("I", $n); 58 chop; 59 $nn /= 2; 60 if ($opt_wordlist) { 61 print "$_\n"; 62 } else { 63 print "$_\t$nn\n"; 64 } 65 } 66 } else { 67 while(<OBJFILE>) { 68 read(OBJFILE, $n, $INTSIZE); 69 $nn = unpack("I", $n); 70 read(OBJFILE, $dummy, $INTSIZE * $nn); 71 <OBJFILE>; 72 73 chop; 74 $nn /= 2; 75 if ($opt_wordlist) { 76 print "$_\n"; 77 } else { 78 print "$_\t$nn\n"; 79 } 80 } 81 } 82 if (($SYSTEM eq "WIN32") || ($SYSTEM eq "OS2")) { 83 open(STDOUT, ">&SAVEOUT"); 84 } 85} 86 87sub usage () { 88 print STDERR $USAGE; 89 exit; 90} 91 92# checke the size of int 93sub getintsize { 94 $tmp = 0; 95 $tmp = pack( "I", $tmp ); 96 $INTSIZE = length( $tmp ); 97} 98 99