Statistics::R パッケージを使用する単純な perl スクリプトから .exe を作成しようとしています。
use Statistics::R;
use strict;
my $R = Statistics::R->new();
$R->startR;
$R->send('x=10');
$R->send('x');
my $ret = $R->read;
print $ret;
$R->stopR();
perlapp .exe ファイルを作成するまでは、すべて問題なく動作します。これをテストすると、次のエラーが表示されます。
Inappropriate I/O control operation: Win32::Process::Create() at /<C:\@programming\r\trying_r_bridge.exe>IPC/Run.pm line 2105
Inappropriate I/O control operation: Win32::Process::Create() at /<C:\@programming\r\trying_r_bridge.exe>IPC/Run.pm line 2224
Inappropriate I/O control operation: Win32::Process::Create() at /<C:\@programming\r\trying_r_bridge.exe>IPC/Run.pm line 2224
オンラインで調べたところ、問題に関する次のスレッドが見つかりました: http://www.nntp.perl.org/group/perl.par/2011/05/msg5022.html
これは彼らが言うことです:
これは、Win32 (のみ) の IPC::Run モジュールが、通常 perl.exe へのパスを含む $^X を使用してサブプロセスを実行しようとするために発生します。ただし、PAR が実行可能ファイルをパックするとき、$^X はたまたま perl.exe を指していないため、IPC::Run はその時点で失敗します。サブプロセスを使用せずに IPC::Run を Windows に実装することは未解決の問題です。
最終的に、スレッドの解決策は IPC::Run3 を使用することですが、これはここではオプションではありません。
この問題を克服する方法について何か提案はありますか?