将Perl转换为Java

将Perl转换为Java,java,perl,syntax,Java,Perl,Syntax,我有一个Perl文件,它实际上调用了一些jar文件,我正试图将它变成一个全Java程序并删除Perl。所以我通过以下几行得出结论: $blammercommand="$javapath $javaparams -jar $blammerpath -conf $blammerconf $blammerparams -cpu $cpu -i \"".$tmpdir."blastresults/*.bls\" -db \"$infilename $blastdb\""; (system($blamme

我有一个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。

这些只是shell转义和shell globbing。从字面上看,它看起来是这样的:

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

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

这些只是shell转义和shell全局绑定。从字面上看,它看起来是这样的:

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

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

/
是一个文件分隔符。
\
是转义字符(用于转义引号字符),而
*
是用于UNIX全局的通配符。由于它们似乎是命令行输入,我不明白为什么需要更改它们。
/
是一个文件分隔符。
\
是转义字符(用于转义引号字符),而
*
是用于UNIX全局的通配符。由于它们似乎是命令行输入,我不明白您为什么需要更改它们。
*
被替换为“任意数量的未知字符”,以可能与多个文件名匹配。。。它并不真正意味着“目录中的所有文件”,除非它自己使用。例如,
foo/d*f
意味着“目录foo中以d开头并以f结尾的任何文件,
foo/*
意味着“目录foo中的所有文件”。
*
被替换为“任意数量的未知字符”,以可能与多个文件名匹配……它实际上并不意味着“目录中的所有文件”“除非它自己使用。例如,
foo/d*f
表示“foo目录中以d开头并以f结尾的任何文件,
foo/*
表示“foo目录中的所有文件”。