在Perl中读取文本文件,搜索单词,返回行号

时间:2014-10-31 19:53:42

标签: string perl search file-io

我试图编写一段代码,这些代码由一些C代码调用,其中包含数据文件和一个特定的单词作为参数传入,并且行号被输出到stdout。我玩了一些$ substr,但那并没有成功。

我认为它最终会像:

if ($oneLineofTheData !~ theSearchWord){
    counter++;
}
else{
    output counter to stdout
}

这会更容易处理吗?我如何传递文件名和搜索字?我是Perl的新手,所以提前感谢您的帮助。

谢谢,

2 个答案:

答案 0 :(得分:3)

要将参数传递给Perl程序,请使用@ARGV数组。

要检查字符串中是否存在子字符串,请使用index

$.保留上次访问的文件句柄的行号。

#!/usr/bin/perl
use warnings;
use strict;

my ($filename, $word) = @ARGV;

open my $FH, '<', $filename or die $!;
while (my $line = <$FH>) {
    if (-1 != index $line, $word) {
        print $.;
        exit
    }
}

答案 1 :(得分:2)

将它放在名为whatever.pl:

的文件中
$ct=0;
while(<>) {
  if ($_ =~ m/$ARGV[0]/) {
    print $ct;
    exit;
  }
  $ct++; 
}

然后在命令行上运行:

perl whatever.pl filename.txt wordToMatch