perl 使用use utf8

jrhapt12:/home/tomcat> cat a1.pl
use Encode;
$phone='18072722237';
open (LOG1 ,"<",'/usr/local/apache-tomcat-7.0.55_8082/logs/catalina.out') or die  $!;
                     while (<LOG1>) {
					#2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
								 
					if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_;
					
					next if ($str !~ /验证/);
					print "$str is $str
";
					push (@arr1 ,$str);
					}};
					
					close LOG1;
print "@arr1 is @arr1
";
print "
";
jrhapt12:/home/tomcat> perl a1.pl
$str is 2016-05-01 07:34:45,429 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为344401,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!

@arr1 is 2016-05-01 07:34:45,429 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为344401,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!


加上use utf8后,再测试:

jrhapt12:/home/tomcat> cat a1.pl
use Encode;
use utf8;
$phone='18072722237';
open (LOG1 ,"<",'/usr/local/apache-tomcat-7.0.55_8082/logs/catalina.out') or die  $!;
                     while (<LOG1>) {
					#2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
								 
					if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){print "$_ is $_
";$str=$_;
					
					next if ($str !~ /验证/);
					print "$str is $str
";
					push (@arr1 ,$str);
					}};
					
					close LOG1;
print "@arr1 is @arr1
";
print "
";
jrhapt12:/home/tomcat> perl a1.pl
$_ is 2016-05-01 07:34:45,429 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为344401,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!

@arr1 is 




此时没有输出,需要编码转换:
jrhapt12:/home/tomcat> cat a1.pl 
use utf8;
use Encode;
$phone='18072722237';
open (LOG1 ,"<",'/usr/local/apache-tomcat-7.0.55_8082/logs/catalina.out') or die  $!;
                     while (<LOG1>) {
					#2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
								 
					if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_;
					
					my $d=encode_utf8('验证');
					next if ($str !~ /$d/);
					print "$str is $str
";
					push (@arr1 ,$str);
					}};
					
					close LOG1;
print "@arr1 is @arr1
";
print "
";
jrhapt12:/home/tomcat> perl a1.pl
$str is 2016-05-01 07:34:45,429 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为344401,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!

@arr1 is 2016-05-01 07:34:45,429 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为344401,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!


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