perlを使って、CGIを書いています。
アンケートのページの名前入力の欄などで、全角のみと指定がありますが、
ユーザーの入力した名前が日本語の全角でない場合、エラーにしたいと考えています。
perlを使って、変換、じゃなく入力したものが、日本語の全角かどうか調べることは可能なのでしょうか?
もし、可能でない場合、一般のページのアンケートの全角エラー判定はどういう方法を用いているのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

パターンマッチで半角文字を判定して、存在すれば


エラーにするとか、そういう方法をとればいいのでは
ないでしょうか?

ただ、エラーを出すよりも変換してしまった方が楽
だと思いますよ。jcode.plで一発変換ですね。

ではでは☆
    • good
    • 0
この回答へのお礼

有難う御座いました。

お礼日時:2001/08/14 04:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QPerlのCGIで全角スペースを入れて

PerlのCGIで全角スペースを入れて

print <<HTML;
<p>完了  ボタン  次へ<br>
<input type="submit" value=" 完了 &gt; "></p>
HTML

隙間をあけて見やすくするのに全角スペースを入れていますが
ブラウザで表示したときに(charset=Shift_JIS")
どんな時に文字化けするのか忘れたのですが
どんな時に文字化けするのでしょうか?

Aベストアンサー

いろんなケースがありますが
・PerlのスクリプトがShift_JIS以外のコードで書かれていて、出力時にShift_JISに変換するような仕掛けが無いとき
・スクリプトがShift_JISで書かれていて、いわゆる「ダメ文字」対策がされていなかったとき
・(記述してある位置が違う、ブラウザが対応していない、など)charset=shift_jisが上手く解釈されなかったとき
・上に加えて、自動判定に失敗したとき
・ブラウザの設定の方が優先されたとき

あたりが頻度の高いものではないでしょうか

QCGI/Perlという本はありますがCGI/PHPという本はないのはなぜですか?

アマゾンで調べると表題でCGI/Perlという本はありますがCGI/PHPという本はないのはなぜですか?

Aベストアンサー

なぜそのような書籍が無いのか結論から申し上げると「需要が無い」からです。
その理由はPHPとCGIの動作に起因し、PHP利用の最大のメリット(?なのでしょうか?)であるHTML組み込みなど利用できなくなるからです。

動作の概略(あくまで概略なので細かくするとキリがありません)を示しますと(右に長いのでテキストエディタなどにコピペしてみていただくと見やすいかと思います)

CGIの動作
 ブラウザ-[INTERNET]->Webサーバー -[CGI]-> システム:処理言語{Perl/C/Ruby...etc.}+プログラム:処理結果 -[CGI]-> Webサーバー -[INTERNET]->ブラウザ

PHPの動作
 ブラウザ-[INTERNET]->Webサーバー:PHP:処理結果 -[INTERNET]->ブラウザ

PHPを単体で処理できるようにインストール設定すればPHPをCGIとして利用することも可能です。当然、利用範囲がCGIの域を出なくなり、PHPとしてのメリットがなくなってしまいます。
そのような非効率的な運用利用をする方はほとんどいないので書籍にしても需要が無いと思います(何らかの事情で必要な方なら、WebサーバとCGIがしっかり理解できていれば簡単に実現できるかと思います)。

ちなみに、代表的なWebサーバApacheは外部組み込み機能を使ってPerlを「PHPの動作」と同じ動きをさせることができます。
そちらは「CGI」の範疇ではなく「Webサーバー構築」の分野ですのでそういった書籍を参考にしてください。

なぜそのような書籍が無いのか結論から申し上げると「需要が無い」からです。
その理由はPHPとCGIの動作に起因し、PHP利用の最大のメリット(?なのでしょうか?)であるHTML組み込みなど利用できなくなるからです。

動作の概略(あくまで概略なので細かくするとキリがありません)を示しますと(右に長いのでテキストエディタなどにコピペしてみていただくと見やすいかと思います)

CGIの動作
 ブラウザ-[INTERNET]->Webサーバー -[CGI]-> システム:処理言語{Perl/C/Ruby...etc.}...続きを読む

Qperlのcgiで-wTを記述するとエラーに

http://oshiete.goo.ne.jp/qa/7451675.html

まだcgiについてわからないことが多く、
色々質問させてもらっているのですが、致命的な?問題がわかりました。

perlにてcgiを作成し、ローカルPCにてコードのチェックのため、

コマンドプロンプトにてC:\adress\test>perl -c encoding

とするとエラーが出ます。
ソースを下の行から順にコメントアウトして調べたところ、
一番最初の行の

#!/usr/bin/perl -wT

で、エラーが出ているということらしいです。
"-T" is on the #! line, it must also be used on the command line at enncoding.cg
i line 1.
この1文が出てしまいます。

-wTを消すとエラーが出なくなります。

エラーを見つけるための-wT記述だと思っていたのですが、-wT自体がエラーになっているということは、一体どういうことなのでしょうか?
書き方が違うのでしょうか?

詳しく教えて頂きたいです。

http://oshiete.goo.ne.jp/qa/7451675.html

まだcgiについてわからないことが多く、
色々質問させてもらっているのですが、致命的な?問題がわかりました。

perlにてcgiを作成し、ローカルPCにてコードのチェックのため、

コマンドプロンプトにてC:\adress\test>perl -c encoding

とするとエラーが出ます。
ソースを下の行から順にコメントアウトして調べたところ、
一番最初の行の

#!/usr/bin/perl -wT

で、エラーが出ているということらしいです。
"-T" is on the #! line, it must also be used on the c...続きを読む

Aベストアンサー

#!で始まる行は、そのファイルを単独で実行するときの引数指定です。

「perl -c encoding.cgi」というように、明示的にperlインタプリタを起動してファイル指定した場合は、#!の行は基本的に意味を持ちません。

その上で、perlインタプリタが「#!行では -T オプション付になっているのに、-Tオプションなしで実行しようとしている」ということでエラーにしているのです。

チェックの時も、「perl -cwT encoding.cgi」のように、-Tオプションを付けてください。
そうすればエラーにならなくなります。

Qcgiで使うperl の一文なのですが、どういう意味でしょうか?

HTMLで扱う一部分を抜き出しています。

if($m % 4 != 0){
while($m % 4 != 0){
if($m % 4 == 3){print "<td width=\"128\" valign=\"top\"> </td>";}
else{

式の意味が分からず悩んでます。
申し訳ないのですが、教えてもらえないでしょうか。。。

Aベストアンサー

>if($m % 4 != 0){
$mを4で割って余りが0じゃなかったら

>while($m % 4 != 0){
$mを4で割って余りが0じゃない間ループする

>if($m % 4 == 3){print "<td width=\"128\" valign=\"top\"> </td>";}
$mを4で割って余りが3だったらtdタグを出力

>else{
それ以外だったら

ってところですかね。
ループ判定から抜けるためにこの続きで$mの変更が入っているはずですが。

QCGIへのアクセスが集中した場合にアクセスを一時的に制限したり、エラーメッセージを表示したり、予備のCGIに飛ばす方法。

CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。

また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。
例えば、Aサーバのmain.cgiを動作させたい場合に、まずBサーバのpre.cgiにとばし、Bサーバのpre.cgiからAサーバのmain.cgiへのアクセスを試み、Aサーバがダウンしている為にアクセスに失敗した場合に、Bサーバ内のerroor.htmやsub.cgiに飛ばすことなどはできるのでしょうか。

できれば、CGI(perl)で実現したいのですが、有効な方法がございましたら、恐れ入りますが、教えていただけないでしょうか。もしも可能でしたら、簡単なサンプルのスクリプト等を添えていただけると大変助かります。何卒よろしくお願いいたします。

CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。

また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。
例えば、Aサー...続きを読む

Aベストアンサー

>、FastCGIやmod_perlというのはどのようなものでしょうか。

Googleあたりで調べれば、かなりヒットするので、まずは調べてみて下さい。。。
↓本家
http://www.fastcgi.com/
http://perl.apache.org/

WWWサーバに組み込む形になるので、独自サーバじゃないと使えませんけど。
レンタルサーバの中には、使えるところもあるらしいですよ。

>大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか

ないと思います。(^^;
というか、Aサーバ上に常駐(Unixならcronか)させたプログラムに、定期的にBサーバに通知させようと考えたわけですが、サンプルのようなものはどこかにあるのかもしれませんけど、見つけるのは大変でしょう。

いずれにしても、BサーバのCGIでAサーバの状態を取得し、その後AサーバのCGIを呼び出すのだとすると、今度はBサーバの負荷が高くなります。
負荷を軽減したり、サーバダウンした場合の対処方法として色々講じようとするのも良いのですが、あまり色々考えすぎると、返って別の部分で負荷が高くなったり、広げすぎて収拾がつかなくなったりするものです。
個々のCGIの処理を軽くするようにするなど、CGI側の工夫で回避できる部分は多いので、そちらがまず先かと思います。(余分な処理をさせない、より速いアルゴリズムを選ぶ、2度の処理に分けられるなら2つのCGIに分け2ステップで処理するetc)

>、FastCGIやmod_perlというのはどのようなものでしょうか。

Googleあたりで調べれば、かなりヒットするので、まずは調べてみて下さい。。。
↓本家
http://www.fastcgi.com/
http://perl.apache.org/

WWWサーバに組み込む形になるので、独自サーバじゃないと使えませんけど。
レンタルサーバの中には、使えるところもあるらしいですよ。

>大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか

ないと思います。(^^;
というか、Aサーバ上に常駐(Unixならcronか)させたプログラ...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報