【问题标题】:Perl user input for unix command用于 unix 命令的 Perl 用户输入
【发布时间】:2016-10-02 17:27:58
【问题描述】:

有人可以帮我解决我在这里做错了什么,一直在挠头。我对 perl 了解不多,只是对 irssi 脚本进行了一些小改动。

            $selectedname = <STDIN>;
            $Nameslist = `grep -i -w '$selectedname'~/file`;

它工作正常我遇到的问题是变量似乎没有正确插入。例如,如果我在命令行中使用单词 test 键入相同的命令,我会显示 3 行。但是,如果我在这个脚本中使用相同的词,它就会变成空的。

我知道它工作正常,因为我可以将 * 作为输入,它会显示整个文件。它只是不适用于输入的字符串。

任何帮助将不胜感激,这真的让我很难过。

【问题讨论】:

  • STDIN 中的行后跟换行符,您可以使用 chomp 函数将它们删除:perldoc -f chomp
  • 效果很好,谢谢。
  • 既然在变量周围使用了单引号,难道不应该对变量进行插值吗?

标签: perl


【解决方案1】:

其实在你使用&lt;STDIN&gt;的时候,一个换行符就来了。所以你需要删除换行符。您可以使用 chomp 删除换行符

代码:

   $selectedname = <STDIN>;
   chomp($selectedname);
   $Nameslist = `grep -i -w '$selectedname'~/file`;

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2020-12-07
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多