Вот скрипт ruby:
discarded_rows=-1
def foobar(line)
if line.match('records discarded: *(\d+)') then
discarded_rows=$1;
puts('yepp, I have found: ' + discarded_rows);
end;
end
foobar('records successful: 99 ');
foobar('records discarded: 2 ');
foobar('records unknown: 8 ');
if discarded_rows != 2 then
puts("discarded_rows: #{discarded_rows}");
end
И вот что я верю: он объявляет (глобальную) переменную с именем discarded_rows
.Затем он объявляет функцию foobar
, которая проверяет, соответствует ли переданный аргумент line
"удаленным записям * \ d".Если это так, он присваивает количество отброшенных записей (как мне кажется, глобальной) переменной discarded_rows
.Если он совпадает, он также печатает «yepp ....» только для того, чтобы убедиться, что совпадение работает.
Функция вызывается с одной строкой, которая должна соответствовать.
Если discarded_rows
не равно 2, оно печатает соответствующее значение.
А вот вывод сценария:
yepp, I have found: 2
discarded_rows: -1
Итак, очевидно, совпадение сработало, и, очевидно, discarded_rows
недействительно глобальный.Это правильно или я что-то упускаю?