No match found.
#!/usr/bin/perl use strict; use utf8; use CGI::Carp qw/fatalsToBrowser/; BEGIN { require 'common.pl' } require Encode; my $max_result = 100; sub decode_url ($) { my $s = shift; $s =~ tr/+/ /; $s =~ s/%([0-9A-Fa-f]{2})/pack 'C', hex $1/ge; return Encode::decode ('utf-8', $s); } # decode_url sub htescape ($) { my $s = shift; $s =~ s/&/&/g; $s =~ s/</g; $s =~ s/>/>/g; $s =~ s/"/"/g; return $s; } # htescape my $param = {}; for (split /[&;]/, $ENV{QUERY_STRING} || '') { my ($name, $value) = split /=/, $_, 2; $param->{decode_url ($name)} = decode_url ($value); } my $eword = htescape $param->{word}; my $pattern = quotemeta normalize $param->{word}; $pattern =~ s/\\-/[- ]/g; unless ($param->{cs}) { $pattern =~ s/([A-Za-z])/'[' . uc ($1) . lc ($1) . ']'/ge; } my $suffix_pattern = { ku => qr/(?>[かこきいっくけ])/, su => qr/(?>[さそしすせ])/, tsu => qr/(?>[たとちっつて])/, nu => qr/(?>[なのにんぬね])/, mu => qr/(?>[まもみんむめ])/, ru => qr/(?>[らろりっるれ])/, u => qr/(?>[わおいっうえ])/, gu => qr/(?>[がごぎいぐげ])/, bu => qr/(?>[ばぼびんぶべ])/, ichidan => qr/(?>[るれろよ])?/, kuru => qr/(?>[るれい])?/, suru => qr/(?>す[るれ]|しろ?|せよ?|さ)?/, i => qr/(?>か[ろっ]|く|い|けれ|う)?/, ## BUG: ありがたい -> ありがとう da => qr/(?>だ[ろっ]?|で|に|なら?)?/, dasuru => qr/(?>だ[ろっ]?|で|に|なら?|す[るれ]|しろ?|せよ?|さ)?/, }->{$param->{suffix}} || qr//; $pattern =~ s/$suffix_pattern$//; $pattern .= $suffix_pattern; $pattern = '\b' . $pattern . '\b' if $param->{aw}; print qq[Content-Type: text/html ; charset=utf-8
No match found.
@{[htescape $file_id]}
"...] and last if ++$result == $max_result; } } $result = 0; my %ja2en = reverse %en2ja; for (sort {$a cmp $b} keys %ja2en) { if (/$pattern/) { next if $added->{$ja2en{$_}}; $has_match = 1; $r .= get_match_text ($ja2en{$_}, $_, $pattern); $r .= q[ | |
...] and last if ++$result == $max_result; } } $r .= q[ |