質問: "\"c:\\program files\\lhaplus\\lhaplus.exe\" /c:lzh o:\"c:\\users\\testtaro\\documents\\laplus_test\" \"c:\\users\\testtaro\\documents\\laplus_test\\2011-03-11(0100)\""; system($cmd); 【エラーメッセージ】 'c:\program' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 「$cmd 」の内容をデバック出力しそれを直接コマンドプロンプトで実行すると 正常に圧縮されます。 おそらく「program files」の半角スペース内で切れてしまっているのだと思いますが、 ダブルクォテーションでくくるやり方が間違っているのでしょうか。 超初心者の質問で大変申し訳ありませんが宜しくお願いします。
回答: 可能なら新しい今時のperlを使いましょう。 今ちょっと昔のjperlを発掘して試して見ましたが、c:\> jperl -v this is jperl, version 4.036 + 1.4(win32, sjis) may 25 1996このjperlだと「'c:\program' は、内部コマンド...」エラーになりましたが、 c:\> perl -v this is perl, v5.8.7 built for mswin32-x86-multi-threadこちらのperlだと、c:\program files 以下のプログラムも問題無く system で実行できました。 (使ったのはactiveperlです。windows用のインストーラがあるので簡単にインストールできます。 http://www.google.co.jp/search?q=activeperl&lr=lang_ja なお、どうしても jperl で動かす必要があるのなら、 >$cmd = "c:\\progra~1\\lhaplus\\lhaplus.exe /c... で実行は可能だと思います。