作者: 藤岡和夫
日時: 2010/2/21(14:44)
On Sun, 21 Feb 2010 13:53:39 +0900
INABA HITOSHI <hinaba@...> さんwrote:

> だとすると Sjis.pm の440行目あたりの
>  
>  exit system map {m/ $your_gap [ ] /oxms ? qq{"$_"} : $_}
>   $^X, "$filename.e", @ARGV;
> 
> の system がコマンドプロンプトを立ち上げているように思えます。
>  
> ここは Sjis.pm の実行の最後の部分で、エスケープ処理を施した
> ファイルを Perl スクリプトとして実行する部分です。
>  
> この exit system を exec にしたいところですが、私の環境だと
> テストにパスしないので exit system にしてあります。
> exit system と書く必然性はあるが、コマンドプロンプトが立ち上
> がる必然性はないという...何だか苦しくなってきたぞ^^;
>  
> "$filename.e" に @ARGV を渡して実行できれば他の書き方でも
> よいのですが。
>  
> # 対処療法と同時に根本的にもなおせると嬉しいです。

 なるほど、Sjis.pmの中味を見てみました。なかなか大変そうですね。

 いろいろと難しいことがありそうでよくわかりませんけど、次のようなevalを
使う方法は検討されたでしょうか。

-----^
#!/Perl5.10/bin/perl
while(<DATA>){
	$script .= $_;# スクリプト全体を読み込んで適当に処理する
}
eval $script;# スクリプトを実行する
__DATA__
print <<END;
Content-type: text/html; charset=Shift_JIS

<html>
<body>
<H1>惑星ソ\ラリスに今日、十\月十\日に着陸した。ハローワールド!</H1>
<H1>惑星ソラリスに今日、十月十日に着陸した。ハローワールド!</H1>
</body>
</html>
END
-----$

 これがダメなら、一旦、処理したスクリプトを使うのがよさそうですね。

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