質問: かなり以前より動かしているperlスクリプト群があるのですが、モジュールの動作の関係で、perlインタプリタを更新することになりました。 すると、今まで動作していたスクリプトの内、一部不具合が出てくるようになりました。ご助力いただけると幸いです。 尚、動作環境は以下のとおりです。 OS:WindowsXP 32bit Perl:v5.12.1(ActivePerl)からv5.26.2.1(StrawberryPerl) 今回、インタプリタの更新に伴って、ActivePerlからStrawberryPerlに切り替えてみたのですが、もしかしたらこれも原因の一つかもしれません。 ### 該当のソースコード ``` #下記の変数はそれぞれ値は代入されているものとします。 my $aaa; my $bbb; my $ccc; system("call java -jar aaa.jar -cmip $aaa -cmmac $bbb > $ccc.txt"); ``` 本来なら$ccc.txtにaaa.jarの実行結果が入るはずですが、$ccc.txtを参照しても何も表示されない(空のファイルの状態)。 ### 試したこと aaa.jarに関してはコマンドプロンプト上からは正常にプログラムが動作することを確認しています。 また、 ``` java -jar aaa.jar -cmip $aaa -cmmac $bbb > $ccc.txt ``` という形でコマンドプロンプトから実行したところ、結果は正常に$ccc.txtに格納されました。 ``` my $aaa; my $bbb; my $ccc; system("call", "java", "-jar", "aaa.jar", "-cmip", "$aaa", "-cmmac", "$bbb", ">$ccc.txt"); ``` という書式に変更してもダメでした。
回答: ``` java -jar aaa.jar -cmip $aaa -cmmac $bbb > $ccc.txt ``` $bbb $ccc の中身は何でしょうか? ダブルクオーテーションで括ると変数が展開されますから、シェルに渡されて実行されるのはこういう形ではないはずですね。