Perl: заменить строку, соответствующую шаблону

#regex #perl #if-statement

#регулярное выражение #perl #if-оператор

Вопрос:

Я хочу заменить всю строку, если она соответствует шаблону в начале строки. Моя строка $foo = "I have a dog - cat" . Теперь, если регулярное выражение совпадает с «У меня есть», строка заменяется на «ПРОВЕРЕНО»

Я пытался

 $foo =~ tr /I have a/CHECKED/
  

Вывод CHECKED dog -cat nad Я не хочу добавлять полное предложение в регулярное выражение. Например $foo =~ /I , иметь Dog -cat/CHECKED ;

Ответ №1:

 $foo = "I have a dog - cat"

$foo =~ s/I have a.*/CHECKED/
  

команда perl tr///
или y/// для транслитерации из буквы в букву

go https://perldoc.perl.org/perlop.html#Quote-Like-Operators

Ответ №2:

Вы должны сделать так, чтобы шаблон соответствовал всей строке, если вы хотите, чтобы вся строка была заменена:

 $foo =~ s/.*I have a.*/CHECKED/;
  

В качестве альтернативы, просто присвоите строке новое значение, если оно соответствует шаблону:

 $foo = 'CHECKED' if $foo =~ /I have a/;