#
# CHISE.pm by Shigeki Moro
-# $Id: CHISE.pm,v 1.4 2003-08-10 09:11:56 moro Exp $
+# $Id: CHISE.pm,v 1.6 2003-10-08 13:30:28 moro Exp $
#
package CHISE;
use strict;
use warnings;
-use BerkeleyDB;
+use utf8;
+use DB_File;
our ($EXCLUSIVE, $HAVE_INTERSECTION, $PROPER_SUBSET, $PROPER_SUPERSET, $EQSET);
($EXCLUSIVE, $HAVE_INTERSECTION, $PROPER_SUBSET, $PROPER_SUPERSET, $EQSET)
# データベースの全ファイルをchownしないとえないかも
my $DB_HOME='';
if (-e '/usr/local/lib/chise/char-db') {
- $DB_HOME='/usr/local/lib/chise/char-db';
+ $DB_HOME = '/usr/local/lib/chise/char-db';
} elsif (-e '/sw/lib/xemacs-21.4.11/powerpc-apple-darwin6.6/char-db') {
$DB_HOME = '/sw/lib/xemacs-21.4.11/powerpc-apple-darwin6.6/char-db';
} elsif (-e '/usr/local/lib/xemacs-21.4.11/i686-pc-linux/char-db') {
- $DB_HOME='/usr/local/lib/xemacs-21.4.11/i686-pc-linux/char-db';
+ $DB_HOME = '/usr/local/lib/xemacs-21.4.11/i686-pc-linux/char-db';
} elsif (-e '/usr/local/lib/xemacs-21.4.11/powerpc-apple-darwin6.4/char-db') {
- $DB_HOME='/usr/local/lib/xemacs-21.4.11/powerpc-apple-darwin6.4/char-db';
+ $DB_HOME = '/usr/local/lib/xemacs-21.4.11/powerpc-apple-darwin6.4/char-db';
} elsif (-e '/usr/local/xemacs-utf2000/lib/xemacs-21.4.11/powerpc-apple-darwin6.4/char-db'){
- $DB_HOME='/usr/local/xemacs-utf2000/lib/xemacs-21.4.11/powerpc-apple-darwin6.4/char-db';
+ $DB_HOME = '/usr/local/xemacs-utf2000/lib/xemacs-21.4.11/powerpc-apple-darwin6.4/char-db';
} elsif (-e '/usr/local/lib/xemacs-21.4.10/i686-pc-linux/char-db') {
- $DB_HOME='/usr/local/lib/xemacs-21.4.10/i686-pc-linux/char-db';
+ $DB_HOME = '/usr/local/lib/xemacs-21.4.10/i686-pc-linux/char-db';
} elsif (-e '/usr/local/lib/xemacs-21.4.10/powerpc-apple-darwin6.4/char-db') {
- $DB_HOME='/usr/local/lib/xemacs-21.4.10/powerpc-apple-darwin6.4/char-db';
+ $DB_HOME = '/usr/local/lib/xemacs-21.4.10/powerpc-apple-darwin6.4/char-db';
} elsif (-e '/usr/local/xemacs-utf2000/lib/xemacs-21.4.10/powerpc-apple-darwin6.4/char-db'){
- $DB_HOME='/usr/local/xemacs-utf2000/lib/xemacs-21.4.10/powerpc-apple-darwin6.4/char-db';
+ $DB_HOME = '/usr/local/xemacs-utf2000/lib/xemacs-21.4.10/powerpc-apple-darwin6.4/char-db';
} elsif (-e 'd:/work/chise/char-db'){
- $DB_HOME='d:/work/chise/char-db';
+ $DB_HOME = 'd:/work/chise/char-db';
} else {
- print STDERR "No database found.\n";
- print STDERR "Please set \$DB_HOME to CHISE.pm.\n";
+ print STDERR "CHISE.pm: No database found.\n";
+ print STDERR "CHISE.pm: Please set \$DB_HOME to CHISE.pm.\n";
exit 1;
}
$aonly++ if (exists $a->{$i});
$bonly++ if (exists $b->{$i});
}
+ } else {
+ $aonly++ if (exists $a->{$i});
+ $bonly++ if (exists $b->{$i});
}
}
if ($common == 0) {
sub getvalue ($$) {
# キーから値をり出す
- my($dbname, $key) = @_;
- tie my %h, "BerkeleyDB::Hash",
- -Filename => $dbname;
- my $value = $h{$key};
+ my ($chise_dbname, $key) = @_;
+ my $value = '';
+ tie (my %h, "DB_File", $chise_dbname, O_RDWR)
+ or die "Cannot open file $chise_dbname: $!\n";
+ $value = $h{$key};
untie %h;
return $value;
}
sub getkeys ($$) {
# 値からキーの配列をり出す
- my($dbname, $value) = @_;
- tie my %h, "BerkeleyDB::Hash",
- -Filename => $dbname;
+ my ($chise_dbname, $value) = @_;
+ tie (my %h, "DB_File", $chise_dbname, O_RDWR, , $DB_BTREE)
+ or die "Cannot open file $chise_dbname: $!\n";
my @keys = ();
for my $key (keys %h) {
- push @keys, $key if ($h{$key} =~ /\b$value\b/);
+ next unless (exists $h{$key});
+ push @keys, $key if ($h{$key} eq $value);
}
untie %h;
return @keys;
}
+
sub cap {
# 2つの配列の積合を求める
my($a, $b) = @_;