字符串的內置函數有:html
chomp, chop, chr, crypt, fc, hex, index, lc, lcfirst, length, oct, ord, pack, q//, qq//, reverse, rindex, sprintf, substr, tr///, uc, ucfirst, y///
分爲幾類:數組
\L
的實現\l
的實現\U
的實現\u
的實現0x
或x
開頭時會自動被認爲是十六進制數0
開頭時會自動被看成8進制數和chomp有點相似。函數
1.修改字符串scala
$str="abnc"; print chop $str; # 輸出c print $str; # 輸出abn
2.修改hashcode
%myhash=(name => "malongshuai", prov => "jiangxi", sch => "linchuan" ); $choped = chop %myhash; while(($key,$value) = each %myhash){ print $key,":","$value\n"; } print "=" x 9,"\n"; print "$choped";
執行返回:htm
prov:jiangx sch:linchua name:malongshua ========= i
3.修改列表對象
@list=qw(aaa bbb ccc ddd); chop @list; # 返回aa bb cc dd print "@list";
reverse用於反轉列表、標量字符串、hash。blog
反轉列表:將元素反轉索引
@arr=qw(abc def ghi); @arr=reverse @arr; print "@arr"; # 輸出(ghi def abc) print join(",",reverse "hello","world") ; # 輸出:world,hello
標量上下文下:串聯各元素獲得一個標量,而後反轉這個標量,即便反轉目標是列表ci
@arr=qw(aA bB cC dD ); print scalar reverse @arr; # 輸出:DdCcBbAa print "\n"; print @arr; # 輸出:aAbBcCdD
反轉字符串:
print scalar reverse "hello"; # 輸出olleh
反轉hash:會把value反轉成key,因此value重複時,將丟棄一部分鍵值
%arr=qw(aA bB cC dD ); %arr1=reverse %arr; while(($key,$value)=each %arr1){ print "$key -> ","$value","\n"; }
執行結果:
dD -> cC bB -> aA
用於從給定字符串中提取出一段子字符串。
用法:
substr STRING,OFFSET,LENGTH,REPLACEMENT substr STRING,OFFSET,LENGTH substr STRING,OFFSET
其中:
use 5.010; $str="love your everything"; say substr $str,5; # 輸出:your everything say substr $str,-10; # 從後往前取:everything say substr $str,5,4; # 從前日後取4個字符:your say substr $str,5,-3; # 從位移5取到位移-3(從後往前算):your everyth say substr $str,5,4,"fairy's"; # 替換源字符串,但返回提取子串:your say $str; # 源字符串已被替換:love fairy's everything
能夠將substr函數做爲左值(lvalue),這樣能夠修改源變量,就像給了replacement參數同樣:
use 5.010; $str="love your everything"; substr($str,5,4) = "fairy's"; say $str; # 源字符串已被替換:love fairy's everything
index和rindex用來找出給定字符串中某個子串或某個字符的索引位置。
用法:
(r)index STRING,SUBSTR,POSITION (r)index STRDING,SUBSTR
use 5.010; $str="love you and your everything"; say index $str,"you"; # 輸出:5 say index $str,"yours"; # 輸出:-1 say index $str,"you",136; # 輸出:-1 say index $str,"you",6; # 從offset=6以後搜索,輸出:13 say rindex $str,"you"; # 輸出:13 say rindex $str,"you",10; # 找出offset=10左邊的最後一個you,輸出:5
用於返回字符串的字符數量,不是字節數。若是是字節數,則採用unicode模塊。
下面的例子中,將輸出11。
$str="hello world"; print length $str;
length不能直接做用於數組和hash來統計元素個數。想要統計個數:
# 數組元素個數 @arr=qw(aaa bbb ccc ddddd eee ff); print scalar @arr; # 輸出6 # hash元素個數 %myhash=qw(aaa bbb ccc ddddd eee ff); print scalar keys %myhash;
若是length的對象未定義,則返回undef。若是length的對象沒有字符但已定義,則返回0。