- 締切済み
ローカルのみで動きがおかしい
MacOS9.22でサーバーソフトに Quid Pro Quo 2.1.2、そして MacJPerl 5.2.0r4 J1を使っています。 Perlで日記のCGIを作ってサイトで使用しているのですが、ネット上にアップしてる分にはちゃんと正常に動きます。 が、ローカルのテスト環境で動かすと変なんです。 動くんですが、処理がおかしかったりします。(split処理がきちんと実行されなかったり:変なとこで区切られる) 何が原因と考えられるでしょうか? 反対の質問はよく見かけるのですが‥‥
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- sisya
- ベストアンサー率39% (97/244)
「分割数」は最大数を指定しているだけですので、変化はしないと思います。 一度そのデータを分割せずにweb上に出力して 化けずに「<>」と表示されているかを確認してみて下さい。 データファイルをFTPなどでアップロードした時に 文字が化けてしまっている可能性もありますし、 データをファイルから読んできた時に化けている可能性もあります。 正常なデータで一箇所だけおかしいと言うのは機種依存より データに問題が発生してしまった可能性の方が大きいと思います。
- sisya
- ベストアンサー率39% (97/244)
ローカルがMacでサーバがUnixなら改行コードの問題で間違いないですね 「split(/\r/,~」の部分を 「split(/(\r\n|\r|\n)/,~」に変更してください。 後の問題点は具体例がないので答え様がありません。
補足
回答ありがとうございます。 現在起きている具体例をあげてみますと、改行の問題ではなくsplitで指定指定している部分の分割具合がおかしいというか‥‥ ログファイルに1行づつ記述してあるものをforeachで読み込んで ($num,$id,$day,$title,$message) = split(/<>/,$line); ってな具合に1行づつ<>で分割して変数に入れてるんですが、サーバー上だと正常なのですが、ローカルだと$idと$dayがひっついたままで、2つが$idに入ってたりします(結果的に4つに分割され$messageには何も入らない)。 一部の<>だけが区切り文字として認識されてないようです(いつも同じ部分)。 最後に分割数として5を入れてみても同じ結果になります。 原因が分かりますでしょうか?
可能性でしかありませんが、前提となる環境が違ってるからじゃないでしょうか。 改行コードの違いや、プラットフォームのサポートの関係で動かない関数があったり、サーバーとローカルでは環境が違います。 もしこれが正解なら、ローカルでもちゃんと動くように、プログラムを改変するしかないです(^_^; 最初から意識してれば問題ないんですけどね……。
お礼
アドバイスありがとうございます。 意識していれば問題ないものなんですか。なるほど。 サーバーにあげる前のテストなのに、変な動きをするのが気持ち悪いですが、あげてしまえばきちんと動いているので良しとする事にします。 楽な気分になりました。ありがとうございました。
お礼
再度の回答ありがとうございます。 分割せずに出力もしてみてるのですが、特に問題はないのです。 ログファイルをローカルで1から書き直してやってみても同じ結果です。しかし同じ物をサーバー上にアップしてから実行すると、きちんと結果がでるのです。 かなり謎くさいですが、とりあえずアップすれば動いているので良しとする事にします。 ありがとうございました。