0

我有一个 Perl 文件,它实际上调用了一些 jar 文件,我正试图将它变成一个全 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

这些只是shell escaping 和shell globbing。从字面上看,它看起来像这样:

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

此处,语法${name}旨在指示变量的插入值。Perl 中的system命令通过默认的系统 shell 运行系统命令,通常类似于 bash。引号用于使几个空格分隔的字符串“粘在一起”作为一个参数。这*是一个通配符,它​​被给定目录中的所有文件名替换。

于 2013-05-24T22:05:56.160 回答