比这篇新的文章:
支持豆瓣的zotero的translator
比这篇旧的文章: [C语言]加强输入的健壮性(long,double)
作者: rui, 点击436次, 评论(0), 收藏者(0), , 打分:
所有评论,共0条:( 我也来说两句)
比这篇旧的文章: [C语言]加强输入的健壮性(long,double)
做邮件标题解码的perl代码
语言: Perl, 标签: procmail perl 2009/02/16发布 1年前更新作者: rui, 点击436次, 评论(0), 收藏者(0), , 打分:
Perl语言: 做邮件标题解码的perl代码
01 #!/usr/bin/perl
02 $sub=join(" ",@ARGV);
03 if ($sub=~ /=\?\S+\?\l(\S)\?/) {
04 if ($1 =~ /[Qq]/) {
05 $sub=decode_qp($sub);
06 }
07 elsif ($1 =~ /[Bb]/) {
08 $sub=decode_base64($sub);
09 }
10 }
11 elsif ($sub=~ /=[a-fA-F0-9][a-fA-F0-9]/) {
12 $sub=decode_qp($sub);
13 }
14 $subject.=$sub;
15 $subject=~s/\'/\\\'/g;
16 $subject=~s/\"/\\\"/g;
17 print $subject;
18 sub decode_qp {
19 my($string) = @_;
20 @buffer=split(/\?/,$string);
21 $string = $buffer[3] if ($buffer[3] ne "");
22 $string =~ s/=([\da-fA-F]{2})/pack("C", hex($1))/ge;
23 $string =~ /\?=(.*)/;
24 $string =~ tr/_/ /;
25 $buffer[4]=~s/^=//;
26 $buffer[0]=~s/=$//;
27 $string="$buffer[0]$string$buffer[4]";
28 return($string);
29 }
30
31 sub decode_base64 {
32 my($string) = @_;
33 my($string2);
34 @buffer=split(/\?/,$string);
35 $string = $buffer[3] if ($buffer[3] ne "");
36 $string =~ s/=+$//;
37 $string =~ tr|A-Za-z0-9+/| -_|;
38 while($string =~ /(.{1,60})/gs) {
39 my($string3) = chr(32+length($1)*3/4);
40 $string2 .= unpack("u",$string3 . $1 );
41 }
42 $buffer[4]=~s/^=//;
43 $buffer[0]=~s/=$//;
44 $string2="$buffer[0]$string2$buffer[4]";
45 return($string2);
46 }
02 $sub=join(" ",@ARGV);
03 if ($sub=~ /=\?\S+\?\l(\S)\?/) {
04 if ($1 =~ /[Qq]/) {
05 $sub=decode_qp($sub);
06 }
07 elsif ($1 =~ /[Bb]/) {
08 $sub=decode_base64($sub);
09 }
10 }
11 elsif ($sub=~ /=[a-fA-F0-9][a-fA-F0-9]/) {
12 $sub=decode_qp($sub);
13 }
14 $subject.=$sub;
15 $subject=~s/\'/\\\'/g;
16 $subject=~s/\"/\\\"/g;
17 print $subject;
18 sub decode_qp {
19 my($string) = @_;
20 @buffer=split(/\?/,$string);
21 $string = $buffer[3] if ($buffer[3] ne "");
22 $string =~ s/=([\da-fA-F]{2})/pack("C", hex($1))/ge;
23 $string =~ /\?=(.*)/;
24 $string =~ tr/_/ /;
25 $buffer[4]=~s/^=//;
26 $buffer[0]=~s/=$//;
27 $string="$buffer[0]$string$buffer[4]";
28 return($string);
29 }
30
31 sub decode_base64 {
32 my($string) = @_;
33 my($string2);
34 @buffer=split(/\?/,$string);
35 $string = $buffer[3] if ($buffer[3] ne "");
36 $string =~ s/=+$//;
37 $string =~ tr|A-Za-z0-9+/| -_|;
38 while($string =~ /(.{1,60})/gs) {
39 my($string3) = chr(32+length($1)*3/4);
40 $string2 .= unpack("u",$string3 . $1 );
41 }
42 $buffer[4]=~s/^=//;
43 $buffer[0]=~s/=$//;
44 $string2="$buffer[0]$string2$buffer[4]";
45 return($string2);
46 }
所有评论,共0条:( 我也来说两句)
代码
