0

実際にいくつかのjarファイルを呼び出しているPerlファイルがあり、それをすべてJavaプログラムにしてPerlを削除しようとしています。だから私はこの行を思いついた:

$blammercommand="$javapath $javaparams -jar $blammerpath -conf $blammerconf $blammerparams -cpu $cpu -i \"".$tmpdir."blastresults/*.bls\" -db \"$infilename $blastdb\"";
(system($blammercommand)==0) or die "unable to do $blammercommand\n";

既に jar ファイルを解凍し、ソース コードを Eclipse プロジェクトに追加しており、関連する jar ファイルのメイン機能にアクセスできます。引数を入力として渡そうとしています。

"\"".$tmpdir."blastresults/*.bls\""私の問題はまさにここにあり、何を"\"$infilename $blastdb\""意味するのかわからないということです。この変数のそれぞれが正確に何であるかは知っていますが、それらがどのように機能しているか\/どの*ようにJavaに変換する必要があるかはわかりません。

4

1 に答える 1

3

これらは、シェルのエスケープとシェルのグロビングです。文字どおりに書くと、次のようになります。

${javapath} ${javaparams} -jar ${blammerpath} -conf ${blammerconf} ${blammerparams} -cpu ${cpu} -i "${tmpdir}blastresults/*.bls" -db "${infilename} ${blastdb}

ここで、構文${name}は、変数の挿入値を示すことを意味します。Perlのsystemコマンドは、デフォルトのシステム シェル (通常は bash など) を介してシステム コマンドを実行します。引用符は、スペースで区切られた複数の文字列を 1 つの引数として「くっつける」ために使用されます。は*ワイルドカードで、特定のディレクトリ内のすべてのファイル名に置き換えられます。

于 2013-05-24T22:05:56.160 に答える