Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如果字符串以特定字符串结尾,则写入条件_Perl_If Statement - Fatal编程技术网

Perl 如果字符串以特定字符串结尾,则写入条件

Perl 如果字符串以特定字符串结尾,则写入条件,perl,if-statement,Perl,If Statement,我有一个字符串“约翰说你好”。我如何编写一个if条件,它的工作原理如下:如果字符串以单词“says hello”结尾,那么 我想先用正则表达式分离字符串,如下所示: $r =~ /(\w+) (\w+) (.+)/; my($user,$msg) = ($1,"$2 $3"); if ($msg eq "says hello"){ .... } 但是,我想写它,而不使用regex分隔它。如何做到这一点?一种方法是使用$将正则表达式锚定到字符串的末尾: use warnings; use str

我有一个字符串“约翰说你好”。我如何编写一个
if
条件,它的工作原理如下:如果字符串以单词“says hello”结尾,那么

我想先用正则表达式分离字符串,如下所示:

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

但是,我想写它,而不使用regex分隔它。如何做到这一点?

一种方法是使用
$
将正则表达式锚定到字符串的末尾:

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$/){

一个好的资源是($r=~/$说你好'$/)是否工作得太好了?还没有,我需要连接到vpn之类的东西,所以需要时间),所以我从理论上问,如果一开始是单词,它的if($r=~/$John/){print“found\n”}?@edzedz:你不应该真的猜测Perl的语法,因为有这么多好的文档。如果阅读,您将看到
$
标记字符串的结尾,
^
标记字符串的开头。