Вы можете не получить то, что ожидаете от этого кода. От perldoc -f system
:
The return value is the exit status of the program as returned by
the "wait" call.
system
на самом деле не даст вам счет от grep
, только возвращаемое значение из процесса grep.
Чтобы использовать значение внутри perl, используйте qx()
или обратные галочки. Э.Г.
my $count = `grep -c ... `;
# or
my $count2 = qx(grep -c ...);
Имейте в виду, что это даст вам новую строку после номера, например, "6 \ п".
Однако, почему бы не использовать все Perl?
my $search = shift;
my $count;
/$search/ and $count++ while (<>);
say "Count is $count";
Неявный open
, выполняемый оператором алмаза <>
, может быть опасным в чужих руках. Вместо этого вы можете открыть файл вручную с открытым три аргумента:
use autodie;
my ($search, $file) = @ARGV;
my $count;
open my $fh, '<', $file;
/$search/ and $count++ while (<$fh>);
say "Count is $count";