perl mojo 编码

mojo 默认开启utf8;

centos6.5:/root#cat t1.pl 
use Mojolicious::Lite;  
use JSON qw/encode_json decode_json/;    
use Encode;  
no strict;  
use JSON;   
use Data::Dumper;  
no utf8;
# /foo?user=sri  
 get '/admin/api/menu' => sub {  
          my $c = shift;  
         open (LOG1 ,"<",'11.out') or die  $!;  
                     while (<LOG1>) {  
                     my $phone='18072722237';  
                    #2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!  
                      my $d='验证';  
                     #my $d='验证';
                    if ( ($phone) and ($_ =~/$phone/) and ($_ =~/$d/) ){$str=$_;  
                       if ($_ =~  /([0-9]{4}-[0-9]{1,2}-[0-9]{2}s+[0-9]{2}:[0-9]{2}:[0-9]{2}.*?)s+(.*?Send message:)s*(.*?)(tos+phoneNo:s*[0-9]{11}).*/){
                       	$a1=$1;
                	$a2=$2;
                 	$a3=$3;
                  	$a4=$4;
                        print "$a1 is $a1
";
                        print "$a2 is $a2
";
                        print "$a3 is $a3
";
                        print "$a4 is $a4
";
                    }};  
                      
                    close LOG1;  
                    my $a=decode_utf8("测试更健康");
          $c->render(text =>  "$a" );  
};  
};
                     
  
  
  app->start;
  
  
  centos6.5:/root#morbo t1.pl 
Server available at http://127.0.0.1:3000
[Thu Mar  9 20:57:25 2017] [debug] GET "/admin/api/menu"
[Thu Mar  9 20:57:25 2017] [debug] Routing to a callback
$a1 is 2016-03-09 09:35:12,380
$a2 is INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:
$a3 is 您的验证码为132435,本验证码5分钟内有效。 
$a4 is to phoneNo:18072722237
[Thu Mar  9 20:57:25 2017] [debug] 200 OK (0.000969s, 1031.992/s)
readline() on closed filehandle LOG1 at /root/t1.pl line 31.


  centos6.5:/root#curl http://127.0.0.1:3000/admin/api/menu
测试更健康centos6.5:/root#curl http://127.0.0.1:3000/admin/api/menu
测试更健康centos6.5:/root#


开启utf8;
centos6.5:/root#vim t1.pl 

use Mojolicious::Lite;
use JSON qw/encode_json decode_json/;
use Encode;
no strict;
use JSON;
use Data::Dumper;
# /foo?user=sri  
 get '/admin/api/menu' => sub {
          my $c = shift;
         open (LOG1 ,"<",'11.out') or die  $!;
                     while (<LOG1>) {
                     my $phone='18072722237';
                    #2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!  
                      my $d='验证';
                     #my $d='验证';
                    if ( ($phone) and ($_ =~/$phone/) and ($_ =~/$d/) ){$str=$_;
                       if ($_ =~  /([0-9]{4}-[0-9]{1,2}-[0-9]{2}s+[0-9]{2}:[0-9]{2}:[0-9]{2}.*?)s+(.*?Send message:)s*(.*?)(tos+phoneNo:s*[0-9]{11}).*/){
                        $a1=$1;
                        $a2=$2;
                        $a3=$3;
                        $a4=$4;
                        print "$a1 is $a1
";
                        print "$a2 is $a2
";
                        print "$a3 is $a3
";
                        print "$a4 is $a4
";
                    }};

                    close LOG1;
                    my $a="测试更健康";
          $c->render(text =>  "$a" );
};
};



  app->start;
               
centos6.5:/root#morbo t1.pl 
Server available at http://127.0.0.1:3000
[Thu Mar  9 20:58:47 2017] [debug] GET "/admin/api/menu"
[Thu Mar  9 20:58:47 2017] [debug] Routing to a callback
[Thu Mar  9 20:58:47 2017] [debug] 200 OK (0.000981s, 1019.368/s)
readline() on closed filehandle LOG1 at /root/t1.pl line 30.

此时匹配不到


/******************
centos6.5:/root#cat t1.pl 
use Mojolicious::Lite;  
use JSON qw/encode_json decode_json/;    
use Encode;  
no strict;  
use JSON;   
use Data::Dumper;  
# /foo?user=sri  
 get '/admin/api/menu' => sub {  
          my $c = shift;  
         open (LOG1 ,"<",'11.out') or die  $!;  
                     while (<LOG1>) {  
                     my $phone='18072722237';  
                    #2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!  
                      my $d=encode_utf8('验证');
                     #my $d='验证';
                    if ( ($phone) and ($_ =~/$phone/) and ($_ =~/$d/) ){$str=$_;  
                       if ($_ =~  /([0-9]{4}-[0-9]{1,2}-[0-9]{2}s+[0-9]{2}:[0-9]{2}:[0-9]{2}.*?)s+(.*?Send message:)s*(.*?)(tos+phoneNo:s*[0-9]{11}).*/){
                       	$a1=$1;
                	$a2=$2;
                 	$a3=$3;
                  	$a4=$4;
                        print "$a1 is $a1
";
                        print "$a2 is $a2
";
                        print "$a3 is $a3
";
                        print "$a4 is $a4
";
                    }};  
                      
                    close LOG1;  
                    my $a="测试更健康";
          $c->render(text =>  "$a" );  
};  
};
                     
  
  
  app->start;
  
  此时可以匹配

原文地址:https://www.cnblogs.com/hzcya1995/p/13349835.html