Для ловушки svn precommit я хочу зачеркнуть начальные пробелы (там, безусловно, нет вкладок) в строках с определенными ключевыми словами в них, прежде чем фиксировать их на сервере. Например строка
MACRO_1 (ABC, "Some String");
должны быть сопоставлены, а начальные пробелы перед MACRO_1
должны быть удалены. В настоящее время у меня есть следующее выражение для соответствия:
if($line =~ /^\s+MACRO_1|MACRO_2|MACRO_3|MACRO_4.*/) {
print "Stripping leading space on line $line\n";
$line =~ s/^\s*//gsxm; # strip leading spaces
}
Когда я смотрю на консоль, я получаю следующий вывод:
Stripping leading space on line MACRO_1;
Stripping leading space on line MACRO_2;
Stripping leading space on line MACRO_3 (ABC, "Some String");
Stripping leading space on line MACRO_1;
Stripping leading space on line MACRO_2;
Stripping leading space on line MACRO_1(123);
Stripping leading space on line MACRO_2(123);
Stripping leading space on line MACRO_1;
Stripping leading space on line MACRO_2;
Stripping leading space on line MACRO_1;
Меня это немного смущает, поскольку есть строки без начального пробела, которые, как я думал, не будут совпадать с \s+
, что, на мой взгляд, один или несколько пробелов .
В чем проблема?