CGI-BBS > CGI > Perl > 自作CGIの改行コードをどのように加えたらわからない。


カレッヂ
カレッヂ


質問者 小野塚貴弘  投稿日 2004/1/8(木) 02:44:58
CGIファイル
※http://www.zyforce-inc.com/change.txt
こちらがスクリプトを改造していましたがうまく動作いたしません。
どうも改行コードの関係だと思うのですが・・・。
別のCGIファイルでは、<>に変換してデータファイルに書き込んでいるの
ですが、こちらのスクリプトで改行コードを挿入したらうまく動作しない
どころか、変な風に書き込んでいるようです。
もし宜しければ、下記の変数を<>で変換する改行コードをどこに挿入した
らよいか教えていただけませんでしょうか?

$address
$biz_time
$closed
$parking
$info
$detail
$privilege

よろしくお願いします。

プロバイダ参照:http://www.zyforce-inc.com/
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:メモ帳
FTPソフト:NextFTP
サーバ移転:していない
改造:している 改造前不動
CGI習熟度:advanced

回答者 しゅんじ  [削除]  投稿日 2004/1/8(木) 11:11:31
ソースが、なかなか面白かったので、ちょっと考えてみました。

まず、129行目で";"が抜けてます。

それでですね、ソースを読んでみたんですけど、110〜116行目の変数に<>は含まれています?
読む限り、$addressはWebから入力されたデータで、<>は無いように思えるんですが・・・・
あと、仮に110〜116行目で<>を改行に変換しても、続くif文のところで、変数が上書きされファイルに保存されているので、やはり意味無いと思います。

フェーズ3もフェーズ2と同じような手順を辿っているのですが、この場合は<>を付けることなく"join"で繋げられファイルに保存されていますね。

あと、このファイルの保存形式は、行末に改行をくっ付けて、残りのデータはカンマ区切りで保存するタイプだと思うんですが、
そんなところに、改行沢山入れてしまうと、ファイルがえらい事になると思います。

>別のCGIファイルでは、<>に変換してデータファイルに書き込んで.......
これがちょっと気になるんですが、ここでの処理は、データの登録&修正&削除
ですよね?
わざわざ、<>に変換しなくても、良いように感じるのですが。

それと148行目が"jpg"ではなくて"gif"になってますよ。
質問者 小野塚貴弘  [削除]  投稿日 2004/1/8(木) 13:42:38
早急に回答いただきありがとうございました。
私自身が作ったCGIではなく、改造して使っているものなので、
良く理解できていないところもあります。
改造前のスクリプトではTEXTAREAタグを使わずINPUTタグで
構成されていたので改行コードを理解していない私にとって
本改造は困難なものでした。
ご指摘いただいた修正箇所に関して修正して再度チャレンジ
してみます。

誠にありがとうございました。
回答者 しゅんじ  [削除]  投稿日 2004/1/8(木) 15:29:07
ども。
やりたい事が見えてきたので、ちょっとレス付けておきます。

"TEXTAREA" で入力している場合、

  $value =~ s/\r\n/\n/g;    $value =~ s/\r/\n/g;
  $value =~ s/\n/<BR>/g;

このようにして、改行を"<BR>"に変換する事が多いです。
そうすると、ファイル内で改行が発生する事も無いですし、
HTMLに書き出す場合"<BR>"が改行になってくれるので、そのまま"print"で書き出す事が出来ます。
ちなみに、データを再び"TEXTAREA"に書き出す場合、改行は"\n"です。

フェーズ2で変更画面を表示しているので、128行目if文の次の行で、"<BR>"or"<>"に改行に戻せば良いと思います。

フェーズ3でデータの登録をしていまから、183〜189行目で改行を"<BR>"または"<>"に変換してやれば、上手くファイルに保存できると思います。

外してたら、すいません。

返信(回答)する

 


Web裏技