Perl で CGI を使った Web ページを作成しているんですが、

作成:Windows
実行サーバ:linux
なので、プログラムの先頭にある perl へのパスをサーバに上げる前に
いちいち全部書き換えなければなりません。

それは面倒なので、簡単な方法、みんながやってるやり方を教えてください。

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2007/08/19 12:41:46
  • 終了:2007/08/19 15:01:57

回答(2件)

id:xxxatsxxx No.1

xxxatsxxx回答回数45ベストアンサー獲得回数22007/08/19 13:00:50

ポイント30pt

C:\usr\bin\perl

にPerlをインストールすればいけますよ。(/usr/binはお使いのLinuxに合わせてください)

http://perl

id:akagi_paon

これは Winows で Perl を C:\usr\bin\perl にインストールすればプログラムの先頭に

#!/usr/bin/perl

と書いてちゃんと実行されるということ?

よくわかりません。

今の環境でプログラムの先頭にあるパスを

#!C:\Perl\bin\perl

から

#!/Perl/bin/perl

に書き換えたところ、うまくいったようです。

Perl のインストール場所を変えてみます。

ありがとうございました。

2007/08/19 13:35:09
id:tezcello No.2

tezcello回答回数457ベストアンサー獲得回数682007/08/19 13:16:18

ポイント40pt
  • 実行環境を合わせます。

実行サーバがローカルなら、samba でperlプログラムの保存場所を共有フォルダとします。

実行サーバがローカルでないなら、実行サーバと同じ配置になる様にローカルにサーバを構築します。

  • プログラム本体は require で呼び出されるライブラリの様にする。

CGI として呼び出されるプログラムは、先頭のパスの設定と、require 文のみとし、デバッグ完了部分はどんどん移していく。

(移していくのは別のライブラリでもOK)

URLはダミーです。

http://q.hatena.ne.jp/1187494905

id:akagi_paon

うむぅ・・・

残念ながら初心者なので言っている意味がよくわかりません。

>実行サーバと同じ配置になる様にローカルにサーバを構築します。

というのは上の人と同じことを言ってる?

2007/08/19 13:29:36
  • id:tezcello
    前半は、自宅に Linux のサーバを作って、実際の実行環境と同じ様な状況を作ろうって事です。
    そうすれば、sendmail, nkf, データベースなど他のアプリケーションとの連携など色々な物がテスト出来ます。

    後半は、簡単な例を挙げるとすると、
    Linux側のメインプログラム(例えば index.cgi)の内容
    #!/usr/local/bin/perl
    require hoge.pl;
    &fuga;

    Winでのメインプログラムの内容
    #!C:\Perl\bin\perl
    require hoge.pl;
    &fuga;

    で、実際のプログラムは hoge.pl に書くんです。
    hoge.pl の内容
    sub fuga{
    $a = 0;
    $b = 2;
    $c = $a + $b;
    print "実際のプログラムの実行結果は $c です";
    }
    1;

    最後の 1; はライブラリの為に必要です。
    で、修正その他は、hoge.pl(Linux, Win どちらも同じ内容) に行います。
    最近Perlをいじって無いんで、何かおかしい所があったらゴメンナサイ。
  • id:akagi_paon
    なるほど~
    プログラム本体を別ファイルにして
    パス設定が必要なファイル自身はそのプログラムを内部で呼び出すだけで
    なかみを書き換えなくてすむようにするんですね。
    勉強になりました。ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません