perl-cgi 文章のマッチングについて
辞書テキストで作ってそれを、任意の文章にマッチングさせ、変換したいのですが、どのようにすると、(プロバイダの)サーバに負担の少ないCGIになりますか?
やりたいことは、
文章>>eigo(lemonとスシ)
を入力すると、
文章>>エイゴ(レモンとスシ)
と返されるCGIです。
今考えているのは、下記ですが、perl-cgiを初めて間もないため、色々なHPを参考にして、なんとか、変換まではできたのですが、、サーバに過大な負担をかけているかが心配です。そこで、効率的なものに書き換えていただけますととても助かります。
宜しくお願い致します。
----etoj.cgi----
#!/usr/bin/perl
print "Content-type: text/html;charset=utf-8\n\n";
$str = '文章>>eigo(lemonとスシ)';
open in,"dic.txt";
@array = <in>;
close in;
$n = 0;
foreach(@array){
$_ =~ s/\n//g;
$_ =~ s/\r//g;
@temp = split(/\t/,$_);
$eng[$n] = $temp[0];
$jpn[$n] = $temp[1];
undef @temp;
$n++;
}
print $str;
$i=0;
foreach(@eng){
$str =~ s/$_/$jpn[$i]/g;
$i++;
}
print "<HR>";
print $str;
exit;
----------------
--dic.txt--
lemon¥tレモン
eigo¥tエイゴ
susi¥tスシ
以下、500KB程度続きます。
-----------
お礼
sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g; } を次のように修正し、解決いたしました。 sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+|https\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g; } いろいろ参考になり大変ありがとうございました。
補足
早速の回答ありがとうございます。実は下記の関数を使っておりますので、これをhttpとhttps対応に修正することは可能でしょうか?宜しくお願いします。 #------------------------------------------------- # 自動リンク #------------------------------------------------- sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g; }