设为首页 收藏本站
查看: 963|回复: 0

[经验分享] 神奇的Perl-第六个任务(6)

[复制链接]

尚未签到

发表于 2017-5-18 12:23:43 | 显示全部楼层 |阅读模式
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
WINDOWS控制台中正常运行需要将utf8编码转换成GBK编码,因此单独编写WINDOWS下运行的程序perl4-18-win.pl
#!c:/perl/bin/perl
#!/usr/bin/perl
#perl4-18-win.pl
# perl4_18_zh为笔者定义的一个模块,导出了一个函数utf2gbk,将UTF8转换为GBK编码
use perl4_18_zh;
my @names;
push (@names,&utf2gbk("李明"));
push (@names,&utf2gbk("李永"));
push (@names,&utf2gbk("黄珏"));
push (@names,&utf2gbk("刘上新"));
#找出所有李姓人名
foreach  $name(@names){
        $xing=&utf2gbk("");
   print "$name " if ($name=~m/^$xing/);
}
  
我们编写一个能兼容中文windows和linux字符编码的程序Perl4-18.pl来完成perl4-18-win.pl和perl4-18-linux.pl的功能,部分核心代码如下:
1)判断当前语言环境并放入$bm,UTF8->0,GBK->1
  下面,我们编写一个能兼容中文windows和linux系统默认字符编码的程序来完成perl4-18-win.pl和perl4-18-linux.pl的功能。
  如何获得当前系统默认编码是否为UTF8呢,我们通过取LANG环境的值来判断。比如:
  if (defined($ENV{"LANG"})) {
  if  ($ENV{"LANG"}=~m/utf(-*)8/i)#UTF8->1,GBK->0
  {$bm=1;}
  else 
  {$bm=0;}
  }
  else
  {$bm=0;}
  以上代码中,如果当前系统编码是UTF8,$bm为0,否则$bm为1。该程序只在linux和中文windows系统运行,中文windows系统编码一般为GBK,因此当$bm为1时,当前系统编码为GBK。
2)增加人名
       push (@names,$bm?&utf2gbk("李明"):"李明");
 
.........
.................
3) 找出所有李姓人名
      my $xing=($bm?&utf2gbk("李"):"李");
     print "$name " if ($name=~m/^$xing/);
  
 最后我们把模块perl4_18_zh修改一下,让它能更好地完成任务。
 
 
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378792-1-1.html 上篇帖子: samba安装报错 perl(Convert::ASN1)问题 下篇帖子: 讨论perl中的utf-8编码处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表