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