[Mew-dist 2445] Execute perl script from ActiveWare Perl (Re: imget の改行コード )

YAMAGUCHI, Shuhei yamagus at example.com
1997年 10月 12日 (日) 23:51:07 JST


やまぐち@ねっとらぴゅたの住人、です。

ActiveWare Perlでの、perl script内部から別のperl scriptを実行する時の
話です。

>>> In article <19971006205935K.yamagus at example.com>,
>>>    "YAMAGUCHI, Shuhei" <yamagus at example.com> writes:

  >> To change the shell setting you must edit the registry. 
  >>
  >> The string:
  >> HKEY_LOCAL_MACHINE\Software\ActiveWare\Perl5\COMSPEC
  >> must be set to the full path your shell.
  >>
  yamagus> 試しにNT4.0SP3でtcsh.exeやsh.exeを設定してみたのですが、う
  yamagus> まくいきませんでした。
  yamagus> #もちろんレジストリにはフルパスで記述してます。

もう少し探った結果なんですが、結論はshellモドキでも作らないと使えない、
です。

このレジストリなんですが、system()では有効でも、open()でパイプ実行した
場合には使用されないようです。
ただし、パイプ実行ではCOMSPEC環境変数が有効になるみたいです。
環境変数のみ指定して、レジストリでは指定しない場合、system()の振る舞い
はちょっと謎でした。

これだけならレジストリと環境変数の両方を指定すれば使えそうですが、問題
は、ActiveWareのperlが、shellとしてcmd.exeかcommand.comを想定している
ようで、引数に必ず"/c"が渡ってしまいます。
しかし、bash.exeやtcsh.exeは、"-c"は理解しても、"/c"は理解しません。
よって、perlそのものを改造するか、bash.exeなどの代わりに使えるものを作
成しないとダメそうです。

でわでわ
-- 
yamagus at example.com / やまぐち@ねっとらぴゅたの住人
  yamagus at example.com / 山口 修平
PGP-Fingerprint: 25 0F 6F E1 57 AD 56 08  3A BC D0 9B 48 AF 31 7A



Mew-dist メーリングリストの案内