代码之家  ›  专栏  ›  技术社区  ›  chappar

如何在Perl一行程序中打印正在处理的文件的名称?

  •  2
  • chappar  · 技术社区  · 17 年前

    我通常使用perl一行程序而不是grep来搜索文件。

    #include <stdio.h>

    perl -ne "print if(/#include\s*[\"<]stdio.h/)" */*.[ch] 
    

    但是我找不到一种方法来打印得到这些行的文件名。我试着打印 $ARGV[0]

    那么,如何打印包含这些行的文件名呢?

    3 回复  |  直到 17 年前
        1
  •  10
  •   hobbs    17 年前

    包含要删除的文件名的变量 *ARGV 向is开放 $ARGV 不 $ARGV[0] (哪一个是第一个元素 @ARGV

    print "$ARGV: $_" if /include\s*[\"<]stdio.h/;
    
        2
  •  4
  •   Pinochle    17 年前

    $ARGV 是当前正在读取的文件名的特殊变量。我相信这就是你需要的。

        3
  •  4
  •   dfa    17 年前

    使用 ack ,这是对grep的一个很好的替代(用perl编写):

    $ ack --cc '#include'
    

    铌