Annotation of db/prgsrc/findequal.pl, revision 1.1
1.1 ! roma7 1: #!perl
! 2:
! 3: #!/usr/local/bin/perl -w
! 4:
! 5: =head1 NAME
! 6:
! 7: findequal.pl - a script for filling the equalto tablee.
! 8:
! 9: =head1 SYNOPSIS
! 10:
! 11: findequal.pl
! 12:
! 13:
! 14: =head1 DESCRIPTION
! 15:
! 16: This script will create a table B<equalto>
! 17: in the B<chgk> database and fill it with pairs of
! 18: equal questions. If the tables exist, it will ask user whether
! 19: new table should be created.
! 20:
! 21: =head1 AUTHOR
! 22:
! 23: Roman Semizarov
! 24:
! 25: =cut
! 26:
! 27:
! 28: use DBI;
! 29: use locale;
! 30: use dbchgk;
! 31: use POSIX qw (locale_h);
! 32:
! 33: do "common.pl";
! 34:
! 35: my ($thislocale);
! 36: if ($^O =~ /win/i) {
! 37: $thislocale = "Russian_Russia.20866";
! 38: } else {
! 39: $thislocale = "ru_RU.KOI8-R";
! 40: }
! 41: POSIX::setlocale( &POSIX::LC_ALL, $thislocale );
! 42: if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"};
! 43:
! 44:
! 45:
! 46: if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"};
! 47:
! 48:
! 49:
! 50: if (checktable('equalto')) {die "The table equalto exists. You must delete it first!\n"};
! 51:
! 52: if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"};
! 53:
! 54:
! 55:
! 56: print "Creating equalto table...\n";
! 57:
! 58: mydo("CREATE TABLE equalto (
! 59: First INT UNSIGNED NOT NULL PRIMARY KEY, KEY FirstKey (First),
! 60: Second INT UNSIGNED NOT NULL, KEY SecondKey (Second)
! 61: )")
! 62:
! 63: or die "Can't create equalto table: $!\n";
! 64:
! 65:
! 66: if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"};
! 67: print "before getbase";
! 68:
! 69: getbase(QuestionId,Question,Authors,Comments);
! 70:
! 71:
! 72: print "after getbase";
! 73:
! 74: print "Loading questions...\n";
! 75:
! 76: if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"};
! 77:
! 78: while ((($id, $a,$author,$comment) = getrow), $id)
! 79: {
! 80: if (!($id%1000)) {print "$id questions loaded...\n"}
! 81:
! 82: $a=~s/³£pPHXxAaBEe3KMoOT/åÅÒòîèÈáÁ÷åÅúëíÏïô/;
! 83: $a=uc $a;
! 84:
! 85: $a=~s/[^êãõëåîçûýúèÿüöäìïòðá÷ùæñþóíéôøâàÊÃÕËÅÎÇÛÝÚÈßÆÙ×ÁÐÒÏÌÄÖÜÑÞÓÍÉÔØÂÀ]//g;
! 86: $ar[$id]=$a;
! 87: $dop[$id]= ($author ? 2 : 0) + ($comment ? 1 : 0);
! 88: $last=$id;
! 89: }
! 90:
! 91:
! 92:
! 93: print "Checking...\n";
! 94:
! 95: $cur=0;
! 96: $ar[0]="\0";
! 97: foreach $q (sort {($ar[$a] cmp $ar[$b]) || ($dop[$b]<=>$dop[$a])} 1..$last)
! 98: {
! 99: if ($ar[$q] eq $ar[$cur]) {$equal{$q}=$cur} else {$cur=$q}
! 100: }
! 101:
! 102: print scalar keys %equal, " pairs found\n";
! 103:
! 104: print("Updating the DB...\n");
! 105:
! 106: foreach $a (keys %equal)
! 107: {
! 108: mydo("INSERT INTO equalto (First,Second) VALUES ($a,$equal{$a})");
! 109: }
! 110:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>