Запишите условие, если строка заканчивается определенной строкой - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть строка "Джон говорит привет". Как я могу написать условие if, которое будет работать следующим образом: если строка заканчивается словами «говорит привет», то ......?

Сначала я подумал о разделении строки регулярными выражениями как это:

$r =~ /(\w+) (\w+) (.+)/;
my($user,$msg) = ($1,"$2 $3");
if ($msg eq "says hello"){
....
}

Но я хочу написать это, не разделяя его с помощью регулярных выражений. Как это сделать?

1 Ответ

2 голосов
/ 22 апреля 2020

Один из способов - привязать регулярное выражение к концу строки, используя $:

use warnings;
use strict;

my $r = 'John says hello';    
if ($r =~ /says hello$/){
    print "found\n"
}

Вы можете обобщить это, сохранив свое сообщение в переменной:

my $r = 'John says hello';
my $msg = 'says hello';
if ($r =~ /$msg$/){
    print "found\n"
}

Если ваше сообщение может содержать метасимволы регулярных выражений, вы можете избежать тех, которые используют \Q:

if ($r =~ /\Q$msg$/){

Хороший ресурс: perldo c perlretut

...