【问题标题】:System Calls in PerlPerl 中的系统调用
【发布时间】:2014-02-18 23:48:12
【问题描述】:
$i = system(bc 110^151%14351);
print($i); 

大家好,我正在尝试使用系统调用来使用安装在我的 linux 机器上的计算器。计算器名称是 GNU bc,表示基本计算器。基本上,这是一种计算方程的简单方法。我可以很容易地从终端运行它,只需键入 bc,然后输入我想要等同的函数,在这种情况下,110 被 14351 修改为 151。问题是,我对 perl 不太了解,我一直在得到这个错误在尝试编写 perl 脚本以使其自动化时,无法在没有包或对象引用的情况下调用方法“bc”。我如何在 Perl 中调用系统调用,或者我可以这样做吗?谢谢

【问题讨论】:

  • 术语“系统调用”通常是指对操作系统内核的调用,如readwriteioctl。令人困惑的是,对 system 函数的调用不是“系统调用”。
  • 既然可以在 Perl 中计算,为什么还要使用 systembc?你忘了在你的系统调用周围加上引号,如果你想捕获输出,你应该使用反引号或qx()

标签: perl gnu system-calls bc


【解决方案1】:

您同时使用了 Perl 的 system() 函数和 bc 命令

您可以像这样从命令行获取bc 来做您想做的事情:

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

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

要从 Perl 调用它,它应该可以工作:

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

chomp 是必需的,因为 Perl 反引号保留了命令输出的尾随换行符。

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

perldoc Math::BigInt

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

【讨论】:

  • 谢谢你教会了我很多关于不同电话的知识。
  • ``和''有什么区别?
  • @wheatfairies: perldoc perlop 并搜索“Quote and Quote-like Operators”。
猜你喜欢
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 2016-01-20
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多