• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perl system関数 引数 フォルダ)

Perlのsystem関数を使ってフォルダを引数に指定する方法について

このQ&Aのポイント
  • Perlのsystem関数を使用してコマンドを実行する際、引数にフォルダを指定すると正常に動作しない場合があります。
  • 実行ファイルは.BATファイルであり、指定したフォルダには複数のテキストファイルが含まれています。
  • 手動でドラッグ&ドロップすると正常に動作するため、引数にフォルダを指定できない場合の解決策はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

> しかしブラウザに (略) > が表示されてしまいます。 それは、バッチファイルが出力したものでしょう。 バッチファイルが出力したものも、CGIの出力に混ざってしまいます。 Perl側で対応する場合は、 system '… > nul' としてください。 あるいは、バッチファイル側で、1行目に @echo off という行を追加してもいけるかと思います。

hi_mawa
質問者

補足

system '… > nul' と記述したところ 無事邪魔な出力を消すことができました。 mtaka2様、回答ありがとうございました!

その他の回答 (1)

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

その対象となる「フォルダ」の実際の名前には、空白などは入っていませんか? スペースはコマンドライン引数の区切り文字になるため、それをそのまま指定するとあるフォルダという一つの引数のはずが、分断された複数の引数と解釈されてしまいます。 そういう場合は、 system '実行ファイル "フォルダ"'; もしくは system "実行ファイル \"フォルダ\""; のように、ダブルクオートで括ってみてください。 (エクスプローラからドラッグドロップでフォルダやファイルなどを指定した場合なんかでは、引数には自動的にダブルクオートが付加されます)

hi_mawa
質問者

補足

回答ありがとうございます。 system '実行ファイル フォルダ';のようにしたら動作しました! しかしブラウザに C:\VMwareProgram\Apache Software Foundation\Apache2.2\htdocs\lab\termmi>call localsetting.bat C:\VMwareProgram\Apache Software Foundation\Apache2.2\htdocs\lab\termmi>PATH=C:\usr\bin\; C:\VMwareProgram\Apache Software Foundation\Apache2.2\htdocs\lab\termmi>PATH=C:\VMwareProgram\Apache Software Foundation\Apache2.2\htdocs\lab\MeCab\bin\;C:\usr\bin\; C:\VMwareProgram\Apache Software ~以下似たようなものが数行~~~ が表示されてしまいます。 print文は print OUT $str;  のみのはずなのですが、 system関数の使用なのでしょうか?