>>951 require './data/data_1.cgi';
require './data/data_2.cgi';
>>951の質問はこれにて終了しました。
↓次の方どうぞ
953 :
936:03/06/07 02:27 ID:???
何度もすいませんが
ファイルの内容を
while( <FILE> ){print;}でテキストエリアに渡した場合は、Windows改行になるのでしょうか?
処理系依存かな
955 :
936:03/06/07 02:36 ID:???
>>954 処理系依存、といいますと、クライアントのOSに影響するということですか?
957 :
936:03/06/07 02:54 ID:???
>>956 そうですか。。。
Linuxの鯖なのに
if($r_code eq "lf"){$body =~ s/\x0D\x0A$/\x0A/;}
elsif($r_code eq "cr"){$body =~ s/\x0D\x0A$/\x0D/;}
で変換できているので、CR+LFで出力されていることになりますが、、、
UNIXはLFだと思ったんだけど、意外だ・・・・
>>953 そのファイルがどの環境で作られたのかによるんじゃない?
Windows環境で書いたファイルであれば、どこに持っていこうがCRLFのまま。
これをUNIX系環境で1行読み込んだ場合、LFの前のCRは「文字列の一部」として
そのまま読み込まれるだけだと思うんだが。
なんか、読み込んだ時点で自動的に変換されるとか、1行書き込むとUNIX環境では
自動的にLF改行になるとか、そんな感じに勘違いしてない?
それと、あなたの実行環境ってローカルで動かしてるサーバーだよね?
間違ってもレンタルサーバーとかプロバイダスペースじゃないよね?
なんか会話が噛みあってないから。
置換処理で困っています。
掲示板で(^-^)などの顔文字があればそれを画像にすりかえるために
IMGタグに置換しようとしていますが、あらかじめ配列に顔文字のリストを
入れて置換してもうまくいきません。
顔文字のリストは
@list = (
"(^-^)", "kao1.gif",
"(T-T)", "kao2.gif",
);
という感じで、実際に置換している部分は
for($i = 0; $i < @list + 0; $i+=2){
$msg =~ s/($list[$i])/<IMG src=\"$list[$i+1]\" 〜略〜 alt=\"$list[$i]\">/g;
}
としています。まったく置換してくれません。
試しに顔文字のリストの顔の部分をOKなどにしてみると置換されました。
特殊な文字だから置換がうまくいかないのでしょうか?
どうすれば解決できるか教えてください、お願いします。
960 :
936:03/06/07 12:00 ID:???
>>958 >なんか、読み込んだ時点で自動的に変換されるとか、1行書き込むとUNIX環境では
>自動的にLF改行になるとか、そんな感じに勘違いしてない?
へ?ぜんぜん思ってませんよ。。。
961 :
936:03/06/07 12:05 ID:???
>>958 えと、つまり
Windows環境で、テキストエリアに入力した文字をcgiに送って
$body =~ s/\x0D\x0A$/\x0A/;
こうしても、LFにならないってことでしょうか?
>>959 顔文字が正規表現のメタ文字として解釈されているんでない?
顔文字のメタ文字を\でエスケープするか、もし面倒ならquotemetaであらかじめ
変換しておくとか。(\Q \Eって使えたかな…どなたか助言求む)
できればソースを書きたいんだけど、いま手元に実行環境がないんで勘弁して。
>>961 いい加減うぜぇ。2ちゃんは学校じゃねぇ。
質問等はまとめて話せ。少しは自分で調べて話せ。
>こうしても、LFにならないってことでしょうか?
やってみろバカ。プログラムに実験はつきものだ。
964 :
936:03/06/07 13:05 ID:???
>>963 やってみました。
if($file =~ /(.*)\x0D\x0A$/){$code = "CR+LF (Win)";}
elsif($file =~ /(.*)\x0A$/){$code = "LF (UNIX)";}
elsif($file =~ /(.*)\x0D$/){$code = "CR (Mac)";}
こいつで正確に改行コードがえられるのかだけ教えてくれませんか?
>>964 それは何も変わらないだろ?チェックしてるだけだ。
もう質問は止めてPerlの超初心者本を読むことをお勧めする。
(´-`).。oO(やってみればぁ、、、)
967 :
959:03/06/07 13:45 ID:???
>>962 メタ文字を\でエスケープしたりquotemetaもやってみましたがだめでした。
なんでかなぁ・・・。
968 :
nobodyさん:03/06/07 14:02 ID:mCmiN6Nz
>>965 ぃゃ、チェックできるのかを質問してるのに
チェックしかできないって怒られても……
969 :
965:03/06/07 14:03 ID:???
>>964 すまん。
>改行コードがえられるのかだけ
が
>改行コードかえられるのかだけ
に見えてた。
末尾の改行に関してはそれでいける。
でも
>>966の言うようにやってみれば分かるだろ。
CR+LF,LF,CRなファイルを用意してやってみればいいんだから。
970 :
nobodyさん:03/06/07 14:21 ID:mCmiN6Nz
>>969 if($r_code eq ゙lf゙){$body =~ s/\x0D\x0A/\x0A/g}
elsif($r_code eq ゙cr゙){$body =~ s/\x0D\x0A/\x0D/g}
でLF改行とCR+LF改行での新規作成はできるんですがCRだけうまくいかないんですよね。それにチェックするスクリプトも一行目の改行コードを調べているので不安なんですが、一つのファイルに改行コードが複数あるってことはないんでしょうか?
それと昨日もらったレスでは/sがいらないみたいなこと言ってましたが一行目だけをLFにするとのこりもLFになるんでしょうか?
971 :
_:03/06/07 14:21 ID:???
972 :
970:03/06/07 14:27 ID:mCmiN6Nz
追記
さっきの/sは/gの間違いでした。
で、/gなんですけど、試したところ複数行の文字は/gがないとコードが変わりませんでした。
たぶん/gを省いてくれた人はチェック時のことをいってくれてたんですね。
chmod(0666,"$logfile");
和鳥でこれが使えないのでデリったら書き込みができなくなった
なんか方法はありまつか?
>>970 >if($r_code eq ゙lf゙){$body =~ s/\x0D\x0A/\x0A/g}
>elsif($r_code eq ゙cr゙){$body =~ s/\x0D\x0A/\x0D/g}
>でLF改行とCR+LF改行での新規作成はできるんですがCRだけうまくいかないんですよね。
意味が分かりません。
>チェックするスクリプトも一行目の改行コードを調べているので
意味が分かりません。
>一つのファイルに改行コードが複数あるってことはないんでしょうか?
モノによる。普通は有り得ないが作れないことも無い。
>それと昨日もらったレスでは/s(=>/g)がいらないみたいなこと言ってましたが一行目だけをLFにするとのこりもLFになるんでしょうか?
意味が分かりません。
正規表現の$の意味は?
改行コードが何物かをもうちょっと勉強してみればわかると思うよ。
UNIXでCRがどういう意味を持ってるかってこと。
977 :
936:03/06/07 17:37 ID:???
>>975 >>if($r_code eq ゙lf゙){$body =~ s/\x0D\x0A/\x0A/g}
>>elsif($r_code eq ゙cr゙){$body =~ s/\x0D\x0A/\x0D/g}
>>でLF改行とCR+LF改行での新規作成はできるんですがCRだけうまくいかないんですよね。
>意味が分かりません。
フォームに入力した文字を、ラジオボタンに押されたものによって、
上のif文で改行コード変更するスクリプトなんです。
LFとCR+LF形式には変換できたのですが、
CR形式に変換できないんです。
>チェックするスクリプトも一行目の改行コードを調べているので
意味が分かりません。
改行コードをチェックするスクリプトです。
# 改行コードの取得
open(FILE, "$name");
$file = <FILE>;
close(FILE);
if($file =~ /(.*)\x0D\x0A$/ && $bin !=~ /40/){$code = "CR+LF (Win)";}
elsif($file =~ /(.*)\x0A$/ && $bin !=~ /40/){$code = "LF (UNIX)";}
elsif($file =~ /(.*)\x0D$/ && $bin !=~ /40/){$code = "CR (Mac)";}
else{$code = "";}
このように先頭行だけをとって調べています。
>>それと昨日もらったレスでは/s(=>/g)がいらないみたいなこと言ってましたが一行目だけをLFにするとのこりもLFになるんでしょうか?
>意味が分かりません。
>>933で、下で/gがなくなっているので・・・
978 :
936:03/06/07 17:38 ID:???
&& $bin !=~ /40/
これは無視しちゃってください。
ファイル一覧取得するスクリプトの一部分で、
こいつで、ディレクトリ以外の改行コードの取得ってことです。。
すいません。
979 :
936:03/06/07 17:42 ID:???
本当にもうしわけありません。
CR改行の件ですが、ローカルではできたのにレン鯖ではできなかったんです。
で、ただたんにスクリプトを更新していなかっただけでした。すいません。
(´-`).。oO(こんなけ引っ掻き回しておいてそういうオチに持ってくるのかぁ、、、勉強になるなぁ。)
981 :
936:03/06/07 18:17 ID:???
>>980 やっぱりできませんでした。
CRの場合、最後の行を改行しないと認識してくれませんねぇ。。。
>>967 どうやってできなかったのかな?うちでは両方できたけど。
%list = (
'(^-^)', 'kao1.gif',
'(T-T)', 'kao2.gif',
);
$msg =~ s/\Q$_\E/$list{$_}/g for(keys %list);
983 :
967:03/06/07 19:58 ID:???
>>982 あぁ・・・書き忘れてました。\Qと\Eのは書き方はわからなかったのです。
たぶんquotemetaの書き方も間違っていたんだと思いますけど。
できました。教えていただいてありがとうございました。
ディレクトリが存在するかどうか確認する方法ってありますか?
何層も下の場合でも使えるの・・
>>985 ファイルテスト演算子ってディレクトリに使ってもいいんですか?
IPやホスト名を2chのIDみたくしたいです。
誰か教えてください。
つまり、
>>987は「聞く前に試してみろ」と言いたいのだな.。
993 :
nobodyさん:03/06/07 22:13 ID:UHTFNtX1
初心者で申し訳ないのですが、Perlモジュールのアンインストールは
どうやればよいのでしょうか。
調べてもこれといったものが見つからなかったため、教えていただき
たい次第です。
>>989 ・・・あんまり回答になってなかった。
「聞く前に試してみろ」と言いたいのではなく、「聞き返す前に読め」といいたい。
せっかく答え返ってきてるのに、何のために聞き返すのかサパーリ。まあ
>>986は氏ねってこった。
次スレは?
そろそろ新スレ立てたほうが良いのでは?
Perlは死滅。次スレは要りません。
C1000タケダ
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。