作者: 藤岡和夫
日時: 2010/2/20(16:53)
On Sat, 20 Feb 2010 15:23:57 +0900
INABA HITOSHI <hinaba@...> さんwrote:

> CGIということは何らかのサーバOSがあって、何らかのWEBサーバがインストール、
> 設定されているのだと思いますが、私はまったく詳しくないです。
> (むしろ教えてもらいたい位です。)
>
> でも PHP の(つまりPerl4の :P)使い勝手を取り戻したい気持ちはあるので自分に
> できることはしたいと思っています。
>  
> CGI スクリプトの中で直に "use Sjis;" できるようにするのはちょっと先の目標
> にすることにして、README の Usage: B のように

 Windowsデスクトップ上で動作させている限り、ライブラリも一緒に使えます
から、CGIとコマンドプロントとそれほど大きな違いはないと思いますが、Web上
のサーバーを使おうとした途端に数多くの障害に遭遇して大概の場合使えないこ
とがほとんどです。それもあって、僕はデスクトップCGIでWebと融合させる形態
のアプリケーションを選んでいるとも言えます。

 また、@niftyホームページ上のサービスとしてCGIを使おうと思えば、EUCの文
字コードの選択を考慮することとSJISのページであることが相容れない。5.8/5.10
ならUTF-8で考えるという道筋もあるので、なぜ、text.world.coocan.jpにペー
ジを移して、方向を転換しないか、Windowsの文字コードがSJISだから^^;)かな
あ・・・まあ、面倒くさいからかな^^;)

> perl Sjis.pm CGI_script.cgi> Escaped_CGI_script.cgi
>  
> として、Apache で実行するのは Escaped_CGI_script.cgi にする、という
> 解決策はどうでしょうか?(確認はしていませんが)
> 実行時には "use Esjis;" されるので Esjis.pm が必要です。

ということで、試してみました。

-----
use Esjis 0.44;
use re 'eval';

print "Content-type: text/html; charset=SHIFT_JIS\n\n";
print "<html>\n<body>\n";
print "<H1>惑星ソ\ラリスに今日、十\月十\日に着陸した。ハローワールド!</H1>\n";
print "</body>\n</html>\n";
-----

これは、デスクトップ(Windowsローカル)CGIとして、Perl5.005_03で動作します
し、コマンドプロンプトも立ち上がらないです。

ただ、@niftyのホームページでは、パーミッション755でも777でもエラーになり
ます。もちろん、Esjis.pmは同じディレクトリに置いていますけど。

> > 一つ目、次のようなCGIスクリプトを書いてWindows上(Perl5.10/Apache2.2)で
> > 実行するとブラウザが表示する前に一瞬コマンドプロンプトが立ち上がります。
> > これは動作のために必要なのでしょうか。
>  
> 必然性はないので、コマンドプロンプトが立ち上がらないようにしたいです。
>  
> > 二つ目、上記の問題と絡むのではと思うのですが、@niftyのhomepageサービス
> > はSolarisの5.005_03のPerlが動いていますが、Sjis.pmが5.005でも動くという
> > ことなので、@niftyホームページで上記CGIを動作させたいと思ったのですが、
> > 次のようなエラーになります。(Windows上のCGIで5.10と同様に5.005_03でも動
> > 作します。)
> > -----
> > 実行エラー
> > 
> > CGIの実行時にエラーが発生しました 。 
> > -----
> 
> (想像ですみませんが)
>  
> "use Sjis;" すると実行しているスクリプトのあるディレクトリに、拡張子 .e を
> 付加したエスケープ後のスクリプトを作ろうとして「新規書込みモード」でファイル
> をオープンしようとします。
>  
>   sysopen($fh, "$filename.e", O_WRONLY | O_TRUNC | O_CREAT)
>    or croak "$__FILE__: Can't open file: $filename.e";
> 
> もしそのディレクトリにCGIスクリプトによる書き込みが許可されていないならば、
> croak によって die してしまいます。
>  
> # 間違っていたらすみません
>  
> [TSabc:778] 藤岡和夫さんwrote:
> > Access to older versions across all platforms
> > できるのはBusiness Edition以上ということ^^;)
> > jperlに必要なAPi522e.exeにアクセスできなくなっている・・・うーむ。
>  
> Business Edition $999/server/year なり、と。
> (これってカナダドルですかね?)

 USでしょうね。カナダドルならそう表示するはずですね。

> Sjis.pm がブリッジする片側の岸なので、できれば無料だといいですね。
>  
> # まだ渡り切っていない難民がいるので ;P
>  
 そうですねえ。次にはRakudo Perl6/Parrotがありますし、稲葉さんには是非
そちらでもご活躍願いたいですね。
> 
> 上記まで至らず Hotmail 上で改行コードに苦戦している稲葉より

藤岡 和夫
kazuf@...
日曜プログラマのひとりごと http://homepage1.nifty.com/kazuf/renewal.html