#!/usr/bin/perl -w # # Copyright (c) 2002-2003 Erik Oliver # # $Id: polish.cgi,v 1.8 2003/08/12 00:25:43 erik Exp $ # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, copy, # modify, merge, publish, distribute, sublicense, and/or sell copies # of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. use vars qw/$q/; use CGI; use CGI::Carp qw(fatalsToBrowser); $q = new CGI; print $q->header(); print q| Reference Numeral Checking
Erik's Web Web Based Patent Polishing Tools Reference Numeral Checking
|; if ($q->param('polish') && $q->param('polish') ne "") { &doPolish(); } else { &printForm(); } print q|

This program is made available in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$Id: polish.cgi,v 1.8 2003/08/12 00:25:43 erik Exp $

|; # # # end of main flow sub mysort { my $numa; my $resta; my $numb; my $restb; $a =~ m/^(\d+)(.*)$/; $numa = $1; $resta = $2; $b =~ m/^(\d+)(.*)$/; $numb = $1; $restb = $2; if($resta && $restb) { $numa <=> $numb || $resta cmp $restb; } else { $numa <=> $numb; } } sub printForm() { print $q->start_form(),"\n"; print "
\n"; print "\n"; print "

Paste Specification into box below

\n"; print $q->textarea(-name=>'polish',-rows=>10,-columns=>60); print "
\n"; print $q->submit(-label=>'Polish'); print "
"; print "
\n"; print $q->end_form(); } sub doPolish() { my $contents = $q->param('polish'); # some simple cleanups $contents =~ s/\r\n/ /g; $contents =~ s/\n/ /g; $contents =~ s/\r/ /g; $contents =~ s/\t/ /g; #$contents =~ s/\[\d+\]//g; # strip paragraph numbers $contents =~ s/\d\d\/\d\d\d,\d\d\d/SERIAL NUMBER REMOVED/g; #strip serials ### strategy collate matches into a hash, then print sorted hash my %hash; my $temp; my $pos = 0; while ($contents =~ m/\b([1-9][A-Za-z\d-]*)/gm) { $pos = pos $contents; if($pos < 61) { $temp = substr($contents,0,$pos); } else { $temp = substr($contents,($pos-60),60); } $hash{$1} .= "$temp\n"; } my $key; print "

Output Results for Patent Polish

\n"; foreach $key (sort mysort (keys (%hash))) { print "

$key
\n"; print "

$hash{$key}
\n"; print "

\n
\n"; } print "

-end of polish-

\n"; }