0
我试图从远程计算机上的xml文件中获取版本号。我通过Net :: SSH :: Perl cmd
函数执行此操作。它看起来是这样的:
my ($version, $err, $exit) = $ssh->cmd("head -11 /some/path/to/the/file.xml | tail -1 | sed 's/<[^>]\+>//g' | xargs");
print Dumper $version;
我试图实现与也就是说,提取数出XML标签<version>2.6</version>
这工作完全正常,当我使用的CMD通过腻子SSH壳
[email protected]:~>head -11 /some/path/to/the/file.xml | tail -1 | sed 's/<[^>]\+>//g' | xargs
2.6
[email protected]:~>
然而,Perl的打印
$VAR1 = '<version>2.6</version>
';
任何想法为什么它不起作用?
编辑:很明显,这无关净:: SSH :: Perl的模块,因为
perl -e "system(\"head -11 /some/path/to/the/file.xml | tail -1 | sed 's/<[^>]\+>//g' | xargs\");"
<version>2.6</version>
你的命令行看起来太复杂。我假设简化它也会解决这个问题。任何特定的原因,你不只是复制文件,并在Perl中处理它?或者试试'sed'1,10d; s/<[^>] *> // g:q'/ some/path/to/the/file.xml' – tripleee
特别是尾随的'xargs'是什么?你想用这个来完成什么?' – tripleee
@tripleee最后的xargs用于从输出中截断不需要的空格/制表符/换行符。 'echo“abc”| xargs'将打印'abc'而不是'\ \ \ abc \ \ \'。 – Vince