我試圖從使用Statistics :: R包的簡單perl腳本創建一個.exe。獲取統計信息:: R與PerlApp(或PAR)一起使用
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 (only)上的IPC :: Run模塊嘗試使用$^X運行子進程,$^X通常包含perl.exe的 路徑。但是,當PAR打包可執行文件時,$^X不會發生 碰巧指向perl.exe,因此IPC :: Run在此時失敗。 實現IPC ::在Windows上運行而不使用子進程是一個未解決的問題。
最後,線程解決方案是使用IPC :: RUN3,這是不是一個不錯的選擇。
有關如何解決此問題的任何建議?
謝謝,但統計:: R需要一個更大的項目,必須通過exe分發。其他一切都很好,但這個模塊造成了麻煩。我同意一個很好的R/perl橋將會非常出色。 – Lozzer 2012-04-02 08:55:58
你要麼修補Statistics :: R來更好地處理windows IPC,要麼應用其他一些horrendus解決方法 – singingfish 2012-04-02 22:15:46
可能!我通過電子郵件發送了統計:: R的開發者,看他們是否有任何建議。尚未回覆。我會在這裏彙報他們說的。 – Lozzer 2012-04-03 09:46:17