我试图编写一段代码,这些代码由一些C代码调用,其中包含数据文件和一个特定的单词作为参数传入,并且行号被输出到stdout。我玩了一些$ substr,但那并没有成功。
我认为它最终会像:
if ($oneLineofTheData !~ theSearchWord){
counter++;
}
else{
output counter to stdout
}
这会更容易处理吗?我如何传递文件名和搜索字?我是Perl的新手,所以提前感谢您的帮助。
谢谢,
答案 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