:perlはgrep -nをエミュレートしますか?私はPerlと、このようにはgrepを-nエミュレートしたいために新しいです
が欲しい:
# egrep -n 'malloc\(|free\(|printf\(' test.c
5:p = malloc(sizeof(char));
6:printf("Test\n");
7:free(p);
があります
# perl grep.pl test.c
malloc\(line 7
free\(line 7
printf(
Processed 10 lines
スクリプト:どういうわけか
#!/usr/bin/perl
$verbose = 1;
@pattern = ('malloc\(', 'free\(', 'printf(');
$counter = 0;
open(FH, "<", $ARGV[1]) or die;
while (<>) {
my $matches = (@pattern[0-2]);
$counter++;
# print "line $counter:$_" if ($_ =~ /malloc\(/o);
print join("line $counter\t\n",@pattern),"\n" if ($_ =~ /$matches/o);
close (FH);
}
print "\n";
$verbose == 1 && print "Processed $counter lines\n";
カウンターが間違っています。私はここで何が欠けていますか?
ループ内で実行している「クローズ(FH)」とは何ですか? – Mat
そして、読みは '<>'で行われ、 ' 'ではなく、' open(FH、 "<"、$ ARGV [1]) 'で始まります。 –
なぜdownvotes?質問は明白であり、努力が示されている。私が知りたいのは、なぜOPがこれを最初にやりたいのかということだけです。 – Zaid