【问题标题】:Perl with backticks - I do not understand the operation inside the backticks带反引号的 Perl - 我不明白反引号内的操作
【发布时间】:2019-07-12 20:10:00
【问题描述】:

我是 perl 新手。以下反引号内发生了什么?

$selfext$banner 是先前定义的。下面的语句是在Linux中执行的,不明白banner函数是从哪里来的?当我打印 $_ 时,我得到一个空字符串。

$_=`banner $selfext $banner`;

【问题讨论】:

  • 可以显示$selfext$banner的内容吗?在 Perl 中,反引号中的表达式作为系统调用执行,其输出作为字符串返回。在这里,您将该输出分配给$_。如果它是空的,那么banner 命令可能没有产生任何输出。
  • 请注意,代码似乎存在code injection 错误。
  • 琼尼斯,谢谢。 selfext 为空,banner="results"

标签: perl backticks


【解决方案1】:

这是invoking a shell,它正在执行banner 命令。 banner 是一个普通的 UNIX 程序,如 uniqsort 甚至 perl 本身,也就是说,这不是一些 perl 函数。但它并未安装在所有系统上(与perl 相同),因此执行可能会失败。更多信息请见man banner

【讨论】:

  • 史蒂芬,谢谢!该脚本在 RedHat7.1 上运行,并且“横幅”不存在。我应该提到该脚本大约有 20 年的历史,并开始在 AIX 等 Unix 机器上运行。
  • banner 也是 Perl Power Tools 的一部分,如果您需要它。
  • @BilgeRat 它可能有一个系统包(yum install banner?)。
  • 包名是bsd-games
猜你喜欢
  • 2021-08-07
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2018-01-06
相关资源
最近更新 更多