[oracle@yyjk md]$ cat check_cert.pl
use DBI;
use Encode;
no utf8;
my $dbName = 'tlyy';
my $dbUser = 'tlcbuser';
my $dbUserPass = 'tlcbuser';
my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database " ;
my $hostSql = qq{select trim(a.name),to_char(a.expired_date),round( expired_date - sysdate) as vardate from tlcb_cert_device a};
my ($a,$b,$c);
my $selStmt = $dbh->prepare($hostSql);
$selStmt->bind_columns(undef, $a, $b, $c);
$selStmt->execute();
while( $selStmt->fetch() ){
if ($c < 30){
my $hint='证书到期日期还有';
$hint=decode_utf8($hint);
#$a=decode_utf8("$a");
print "$a"."---"."$b"."---"."$hint"."$c"."
";;
}};
$selStmt->finish;
$dbh->disconnect or warn "DB disconnect failed: $DBI::errstr
";
[oracle@yyjk md]$ perl check_cert.pl
Wide character in print at check_cert.pl line 18.
二代支付证书---15-11月-16---证书到期日期还有-239
Wide character in print at check_cert.pl line 18.
二代支付证书---15-11月-16---证书到期日期还有-239
Wide character in print at check_cert.pl line 18.
支付宝证书---06-8月 -17---证书到期日期还有25
Wide character in print at check_cert.pl line 18.
管理员usbkey证书---10-1月 -17---证书到期日期还有-183
Wide character in print at check_cert.pl line 18.
分析员usbkey证书---10-1月 -17---证书到期日期还有-183
解决办法:
use DBI;
use Encode;
use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');
my $dbName = 'tlyy';
my $dbUser = 'tlcbuser';
my $dbUserPass = 'tlcbuser';
my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database " ;
my $hostSql = qq{select trim(a.name),to_char(a.expired_date),round( expired_date - sysdate) as vardate from tlcb_cert_device a};
my ($a,$b,$c);
my $selStmt = $dbh->prepare($hostSql);
$selStmt->bind_columns(undef, $a, $b, $c);
$selStmt->execute();
while( $selStmt->fetch() ){
if ($c < 30){
my $hint='证书到期日期还有';
#$hint=decode_utf8($hint);
#$a=encode('utf8',"$a");
print "$a"."---"."$b"."---"."$hint"."$c"."
";;
}};
$selStmt->finish;
$dbh->disconnect or warn "DB disconnect failed: $DBI::errstr
";
[oracle@yyjk md]$ perl check_cert.pl
二代支付证书---15-11月-16---证书到期日期还有-239
二代支付证书---15-11月-16---证书到期日期还有-239
支付宝证书---06-8月 -17---证书到期日期还有25
管理员usbkey证书---10-1月 -17---证书到期日期还有-183
分析员usbkey证书---10-1月 -17---证书到期日期还有-183