神奇的Perl 第六個任務 6

2021-08-30 19:14:08 字數 1264 閱讀 6798

在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)

我們編寫乙個能相容中文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)) =~m/utf(-*)8/i)#utf8->1,gbk->0

else 

else

以上**中,如果當前系統編碼是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修改一下,讓它能更好地完成任務。

神奇的PERL 第六個任務(2)

1 module 是在perl 裡可復用的基本的單元,實質為定義在乙個同名檔案 以.pm 結尾 裡面的包。例如 我們先定義mydeep 模組 mydeep.pm mydeep.pm檔案 package mydeep 包名 以下兩行令本模組繼承exporter 類,必須要有這2 行,否則無法輸出符號給...

神奇的Perl 第六個任務 3

per 程式必須小心處理字元編碼,否則可能造成亂碼 正則匹配錯誤等莫名其妙的問題。1 23 語法格式如下 binmode 裝置控制代碼,encoding 編碼 裝置控制代碼可以是 stdout stdin stderr 以及自定義的檔案控制代碼。中文字元編碼主要使用兩種 utf8 和gbk 以下是幾...

webots第六個示例總結

勾選上上面的兩個選項,可以看到距離感測器的視線和電機的軸線 是webots指導手冊原碼 include include include define time step 64 intmain int argc,char ar for i 0 i 2 i wbdevicetag wheels 4 ch...