Perl split
函数\x0d\x0aPerl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入
数组中。这个Perl \x0d\x0asplit函数使用规则表达式(RE),如果未特定则工作在$_变量上。\x0d\x0aPerl split函数可以这样使用: \x0d\x0a$info="Caine:Michael:Actor:14,LeafyDrive" \x0d\x0a@personal=split(/:/,$info) \x0d\x0a其结旦粗果是:@personal=("Caine","Michael","Actor","14,LeafyDrive")\x0d\x0a◆如果我们已经把信息存放在$_变量中,那么可以这样:\x0d\x0a@personal=split(/:/)\x0d\x0a如果各个域被任何数量的冒号分隔,可以用RE代码进行分割: \x0d\x0a$_="Capes:Geoff::Shotputter:::BigAvenue" \x0d\x0a@personal=split(/:+/) \x0d\x0a其结果是:模饥镇@personal=("Capes","Geoff","Shotputter","BigAvenue")\x0d\x0a但是下面的代码:\x0d\x0a$_="Capes:Geoff::Shotputter:::BigAvenue" \x0d\x0a@personal=split(/:/) \x0d\x0a的结果是:@personal=("Capes","Geoff","","Shotputter","","","BigAvenue")\x0d\x0a◆这个Perl split函数中单词可以被分割成字符,句子可以被分割成单词,段落可以被分割成句子:\x0d\x0a@chars=split(//,$word) \x0d\x0a@words=split(//,$sentence) \x0d\x0a@sentences=split(/\./,$paragraph) \x0d\x0a在第一句中,空字符串在每个字符间匹配,所以@chars数组是一个字符的数组。>>\x0d\x0a//之间的部分表示split用到的正则表达式(或者说分隔法则)\x0d\x0a\s是一种通配符,代表
空格\x0d\x0a+代表重复一次或者一次以上。\x0d\x0a所以,\s+代表一个或者一个以上的空格。\x0d\x0asplit(/\s+/,$line)表示把字符串$line,按空格为肢帆界分开。 纳拿my @data = split/\s+/,$line
表示用洞链搭1个或多个空【包括空格,Tab……】分割$line,分割后的内容放入数组data
由于文件每一“列”指的也是用空格、Tab分开的字段
打印data[0] 就是输出第一个字段(第一列)。data[1]就是第二个字段唤搭(第二列)……
嘿,
首先得说一句,
你这本书译得真恶心..
我半句都没看得明白.
split
很简单,
首先就是在一条字串中,
找出匹配的地方,
并将之
"取代"
为
"切割点".
然後从这切割点进行真正的切割并备.
但回传给你的数组中,
将会从尾到头地消掉没有值的元素,
直到(从尾到头)发现第一个有值的元素.
这是
split
预设的行为(因为多数人都这麼做就够).
但这有好模芦,
也有不好,
假如我读的是一个
csv
档,
姓名
电话
地址...
备注1,
备注2
等等有9个列,
而你想确保读到
9
个(已知的)元素回来,
那麼如果後面的备注1,
备注2为空,
那麼你的数组只会有
7
个元素返回来,
这时,
你就旦蔽带会用得上
split
的第
3
个参数.
@fields
=
split
/:/,
":::a:b:c:::"
print
"<$_>"
foreach
@fields
print
$/
@fields
=
split
/:/,
":::a:b:c:::",
9
print
"<$_>"
foreach
@fields
#
这时就会有
9
个元素返回来
评论列表(0条)