2014-02-18 170 views
0
$i = system(bc 110^151%14351); 
print($i); 

嘿大家好,我正在尝试使用系统调用来使用我的Linux机器上安装的计算器。计算器的名称是GNU bc,用于基本计算器。基本上它是计算方程的一种简单方法。我可以很容易地从终端运行它,只需键入bc然后我想要等同的功能,在这种情况下,110提高到1513514351。问题是,我不知道perl太多,我不断得到这个错误尝试编写perl脚本以使其自动化时,无法在没有包或对象引用的情况下调用方法“bc”。我如何在Perl中调用系统调用,或者我允许这么做?由于系统调用Perl

+0

'perldoc -f系统' – toolic

+0

术语“系统调用”通常指向OS内核的调用,如'read','write'或'ioctl'。混淆的是,对“系统”功能的调用不是“系统调用”。 –

+1

为什么在使用'system'和'bc'的时候可以用Perl来计算呢?你忘记在你的系统调用中引用引号,如果你想捕获输出,你应该使用反引号或'qx()'。 – TLP

回答

1

您同时使用Perl的system()功能和bc命令

你可以得到bc做你想从这样的命令行:

$ echo '110^151%14351' | bc 
7355 

Perl的system函数返回一个数包含关于调用的命令的终止状态的信息;你想要的命令的输出。

从Perl中调用这个,这应该工作:

chomp($i = `echo '110^151%14351' | bc`) 

需要的chomp,因为Perl反引号保留在命令的输出其后的换行符。

但是,您可以使用Math::BigInt包在Perl本身中执行此操作。类型

perldoc Math::BigInt 

在您的shell提示符下获取更多信息。

+0

谢谢,教会了我很多关于不同的电话。 – wheatfairies

+0

''和''有什么区别? – wheatfairies

+0

@wheatfairies:'perldoc perlop'并搜索“Quote and Quote-like Operators”。 –