あなたは引数を変換したい理由を私は知らないが、それはそれは簡単だろうように見えますか?
my @args = ("java", "-jar", "first.jar", "firstname lastname");
my $cmd = join(' ', @args);
結果は次のようになります。
java -jar first.jar firstname lastname
あなたの単一の名前の引数が2になります。正しい形式は次のようになります。
java -jar first.jar "firstname lastname"
map
助けることができる:
my $cmd = join(' ', map { "'$_'" } @args);
(。あなたの引数は()'
引用符が含まれている可能性がある場合余分な努力が必要とされている)
を出力をキャプチャするために、使用バックチックまたはopen
:
my $output = `$cmd`; # Multiline output in one variable
my @output = `$cmd`; # Each output line in one array element
# Read the output line by line saving memory
open my $fh,'-|',$cmd;
while (<$fh>) {
# Do something with a single output line in $_
}
最後のものは、出力全体を1つの変数または配列に解析する必要はありません。各ループ反復で1行を処理します。一度に1つの回線だけを格納する必要があるため、数百GBの出力を簡単に処理できます。
何(引数@ "")に参加= '$文字列funciton(http://perldoc.perl.org/functions/join.html)[参加]について;' – mkHun
実際に私のjar出力はコンソール上で "abc xyz"です。私は "abc"と "xyz"の両方を別の変数に保存したいと思います。どうやってやるの? – john
は、スペースを区切ってデータを分割します。 $ output [0] '' abc'と '$ output [1]'に 'xyz'が含まれています – mkHun