Solaris上で動作しているPerlスクリプトがあるのですが、
Linux上で動作させることができないので、困っています。
原因を特定するため、Solarisからコピーしたファイルの
中身を、下記コードに入れ替えた場合と、新規にLinux
上で作成した場合を比べてみると、表示結果が異なります。
solarisからコピーしたファイルを表示すると、
「500 サーバ内エラー
サーバー内で、実行中のプログラムが異常終了しました。」
と表示されます。
新規にLinux上で作成したファイルを表示すると、
問題なく表示されます。
これくらいしか分からないのですが、何かアドバイスを
いただけないでしょうか?
# file test.pl <-Solarisからコピーしたファイルを編集
script text executablerl
# file test2.pl <-Linux上で新規作成
test.pl: a /usr/bin/perl script text executable
・コード
#!/usr/bin/perl
print "Content-type: text/plain\n";
print "\n";
print "Hello!World";
exit(0);
No.4ベストアンサー
- 回答日時:
\r\n を \n にするには、例えば vi なら
$ vi -b filename[Enter]
(全ての行の最後に ^M がくっついている)
:%s/[^V][^M]//[Enter]
[^V]のところはコントロール+V
[^M]のところはコントロール+M
画面上は↓こうなります。
:%s/^M//
Enter を押すと ^M が消えますので
:wq
とやって保存します。
No.5
- 回答日時:
もう解決しているかも知れませんが、vi以外でやる方法を書いておきます。
* Perlでやる場合
perl -i.bak -pe 's/\r//' test.pl
バックアップが test.pl.bak で残ります。
* sedでやる場合
sed 's/\r//' tetst.pl >tmp
mv tmp test.pl
No.3
- 回答日時:
noboruが述べているので正しいように思いますが、少し補足を。
500エラーが出力された場合、Webサーバのエラーログにその内容が出力されます。また、Web経由ではなく、コマンドラインから正しいHTTPレスポンスが出力されるかどうかを確認することもできます。
$ perl test.pl
No.2
- 回答日時:
そのプログラムはどのようにして Solaris のマシンから Linux のマシンへ転送しましたか? (直接 Linux の方から ftp で Solaris の方にログインして転送してますか?)
どうしてこういう質問をするのかというと、間に Windows (あるいは改行コードのデフォルトが CR/LF のOS) が介在していて、 Solaris -> Windows -> Linux という風に ftp で転送した場合、全ての転送をバイナリモードで行わないと改行コードが \n (LF) から \r\n (CR/LF) に変わるからです。
改行コードが変わった場合は cat file.pl とやっても変わったことはわかりません。od -c で改行が \r \n になっていないかを見る必要があります。
ありがとうございます。
実行結果は、下記のようになりました。
これは、改行コードが入っているということになるのでしょうか?
もし、そうでしたら、再度改行コードを\n(LF)にする方法はあるの
でしょうか?
# od -c test.pl
0000000 # ! / u s r / b i n / p e r l \r
0000020 \n p r i n t " C o n t e n t -
0000040 t y p e : t e x t / p l a i n
0000060 \ n " ; \r \n p r i n t " \ n "
0000100 ; \r \n p r i n t " H e l l o !
0000120 W o r l d " ; \r \n \r \n e x i t (
0000140 0 ) ; \r \n \r \n
0000147
# od -c test2.pl
0000000 # ! / u s r / b i n / p e r l \n
0000020 p r i n t " C o n t e n t - t
0000040 y p e : t e x t / p l a i n \
0000060 n " ; \n p r i n t " \ n " ; \n
0000100 p r i n t " H e l l o ! W o r
0000120 l d " ; \n \n e x i t ( 0 ) ; \n \n
0000140
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ViエディタとVimエディタの違い...
-
メモ帳での一括たて列選択
-
【文字コード】コピー&ペース...
-
windowsのメモ帳からlinuxへコピペ
-
ファイル名の付け方(中央揃え)
-
Macで簡単に改行を解除したい
-
テキスト 改行だけの行の一括...
-
SolarisからLinuxへコピーした...
-
ドラッグ&コピー→デスクトップ...
-
.batファイル作成 mailto: コ...
-
コピー&ペースト時の文字コー...
-
テキストファイルをページ番号...
-
シェルスクリプトの文字化け
-
Windows日本語版のテキストファ...
-
UTF-8 環境をSJIS化した後の改...
-
嫌ってるのに真似してきたりマ...
-
Winmerge ファイルの中身は同じ...
-
同期センターのマークが出てま...
-
onedriveの中身を削除したらパ...
-
コマンドプロンプトによるフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メモ帳での一括たて列選択
-
windowsのメモ帳からlinuxへコピペ
-
【文字コード】コピー&ペース...
-
Macで簡単に改行を解除したい
-
MS-DOSテキストファイルっ...
-
テキストファイルをページ番号...
-
LinuxMintで,Windows時代に作成...
-
アイコンの名前の改行
-
.batファイル作成 mailto: コ...
-
ファイル名の付け方(中央揃え)
-
コピー&ペースト時の文字コー...
-
ubuntuでテキストファイルが開...
-
テキストで特定の文字列を含む...
-
ドラッグ&コピー→デスクトップ...
-
XMLの表示文字化け
-
UTF-8 環境をSJIS化した後の改...
-
MacでファイルをPDFに一括変換
-
文字コードの混在しているファ...
-
illustrator cs2「均等配置(最...
-
RedHatで使えるエディタ
おすすめ情報