Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl在使用管道时会出现回跳_Perl_Sh_Backticks - Fatal编程技术网

Perl在使用管道时会出现回跳

Perl在使用管道时会出现回跳,perl,sh,backticks,Perl,Sh,Backticks,我在尝试捕获简单命令的输出时遇到一些问题: $timeTotal = `echo $timeTotal + $time | bc -l`; 但我得到了以下错误: sh: +: not found sh: Syntax error: "|" unexpected 这个命令在bash中工作得很好,但似乎实际使用了sh。一开始我认为问题在于管道的使用(尽管总和也没有得到很好的解释)。让我困惑的是,同一脚本中的以下命令不会导致错误,并且工作正常: my $time = `cat $out.$step

我在尝试捕获简单命令的输出时遇到一些问题:

$timeTotal = `echo $timeTotal + $time | bc -l`;
但我得到了以下错误:

sh: +: not found
sh: Syntax error: "|" unexpected
这个命令在bash中工作得很好,但似乎实际使用了sh。一开始我认为问题在于管道的使用(尽管总和也没有得到很好的解释)。让我困惑的是,同一脚本中的以下命令不会导致错误,并且工作正常:

my $time = `cat $out.$step | bc -l`;

有什么建议吗?

$timeTotal
包含一个不应该包含的尾随换行符,因此您正在执行

echo XXX

而不是

echo XXX + YYY | bc -l
你肯定错过了某个地方的
chomp


您的命令中还有一个不合适的双引号。

不推荐使用反勾号。改用
qx(..)
语法

$timeTotal = qx(echo $timeTotal + $time | bc -l");

您知道Perl可以做加法,对吧?有点离题:您到底为什么要使用shell命令来做(非常)简单的数学
$timetotal+=$time
是您要查找的perl代码。是否不推荐使用反勾号?你有这方面的消息来源吗?没有提到他们在报告中被弃用。这根本不能回答问题。
$timeTotal = qx(echo $timeTotal + $time | bc -l");