欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Perl split字符串分割函數(shù)用法指南

 更新時(shí)間:2013年02月09日 17:45:49   作者:  
本文向大家簡(jiǎn)單介紹一下Perl split函數(shù)的用法,Perl中的一個(gè)非常有用的函數(shù)是Perl split函數(shù)-把字符串進(jìn)行分割并把分割后的結(jié)果放入數(shù)組中

本文和大家重點(diǎn)討論一下Perl split函數(shù)的用法,Perl中的一個(gè)非常有用的函數(shù)是Perl split函數(shù)-把字符串進(jìn)行分割并把分割后的結(jié)果放入數(shù)組中。這個(gè)Perl split函數(shù)使用規(guī)則表達(dá)式(RE),如果未特定則工作在$_變量上。

Perl split函數(shù)

Perl中的一個(gè)非常有用的函數(shù)是Perl split函數(shù)-把字符串進(jìn)行分割并把分割后的結(jié)果放入數(shù)組中。這個(gè)Perl split函數(shù)使用規(guī)則表達(dá)式(RE),如果未特定則工作在$_變量上。

Perl split函數(shù)可以這樣使用: 

復(fù)制代碼 代碼如下:

$info="Caine:Michael:Actor:14,LeafyDrive"; 
@personal=split(/:/,$info); 


其結(jié)果是:@personal=("Caine","Michael","Actor","14,LeafyDrive");

◆如果我們已經(jīng)把信息存放在$_變量中,那么可以這樣:

復(fù)制代碼 代碼如下:

@personal=split(/:/);

如果各個(gè)域被任何數(shù)量的冒號(hào)分隔,可以用RE代碼進(jìn)行分割: 

復(fù)制代碼 代碼如下:

$_="Capes:Geoff::Shotputter:::BigAvenue"; 
@personal=split(/:+/); 

其結(jié)果是:@personal=("Capes","Geoff","Shotputter","BigAvenue");

但是下面的代碼:

復(fù)制代碼 代碼如下:

$_="Capes:Geoff::Shotputter:::BigAvenue"; 
@personal=split(/:/);

的結(jié)果是:@personal=("Capes","Geoff","","Shotputter","","","BigAvenue");

◆這個(gè)Perl split函數(shù)中單詞可以被分割成字符,句子可以被分割成單詞,段落可以被分割成句子:

復(fù)制代碼 代碼如下:

@chars=split(//,$word);
@words=split(//,$sentence); 
@sentences=split(/\./,$paragraph); 

在第一句中,空字符串在每個(gè)字符間匹配,所以@chars數(shù)組是一個(gè)字符的數(shù)組。>>

//之間的部分表示split用到的正則表達(dá)式(或者說(shuō)分隔法則)
\s是一種通配符,代表空格
+代表重復(fù)一次或者一次以上。
所以,\s+代表一個(gè)或者一個(gè)以上的空格。
split(/\s+/,$line)表示把字符串$line,按空格為界分開(kāi)。
比如說(shuō),$line="你好朋友歡迎光臨我的網(wǎng)站jb51.net";
split(/\s+/,$line)后得到:
你好朋友歡迎訪問(wèn)我的網(wǎng)站jb51.net

一般用法: @somearray = split(/:+/, $string ); #括號(hào)可以不要。  若不指定$string, 則對(duì)默認(rèn)變量$_操作, 兩斜線間為分割符,可以用正則表達(dá)式,強(qiáng)悍異常。

在perl手冊(cè)里,有一個(gè)用法不多見(jiàn)。即: split /PATTERN/, EXPR, LIMIT;  關(guān)鍵就是這個(gè)LIMIT參數(shù),可以節(jié)省不少事情。 如果使用了LIMIT,且是正數(shù),表示分割成不多于LIMIT指定的數(shù)目的域。If LIMIT is unspecified or zero, trailing null fields are stripped (which potential users of pop would do well to remember). If LIMIT is negative, it is treated as if an arbitrarily large LIMIT had been specified. Note that splitting an EXPR that evaluates to the empty string always returns the empty list, regardless of the LIMIT specified.

通過(guò)制定LIMIT,可以在很長(zhǎng)(分割產(chǎn)生幾萬(wàn)個(gè)元素or域)的行分割操作中,只返回關(guān)鍵的前幾列的域值,減少了內(nèi)存使用及時(shí)間消耗。比如一般的基因型數(shù)據(jù),第一列通常是材料命名,需要通過(guò)材料名的判斷取舍,這時(shí)候就可以這樣用。 my ($firstfield) = split /\t/, $someline, 1;  如果需要前面幾列的值,這樣的方式對(duì)大文件效率很好: my (undef, $var1, undef, undef, undef, $var2)=split /\t/, $someline, 6;

有網(wǎng)友對(duì)這種方式做了測(cè)試,顯示較好。引用如下:
>>>
一個(gè)文件,每行都有18項(xiàng),各項(xiàng)之間用\t分割,使用時(shí)用到了第6項(xiàng),折騰了幾種用法

復(fù)制代碼 代碼如下:

my @array = split("\t",$_); my $var = $array[6];   測(cè)試文件平均用時(shí)8.2s
 my($var) = (split("\t",$_))[6];  測(cè)試平均用時(shí)5.1s
 my(undef,undef,undef,undef,undef,undef,$var) = split("\t",$_); 平均用時(shí)3.53s
 my(undef,undef,undef,undef,undef,undef,$var) = split("\t",$_,7);平均用時(shí)3.52s
 my $var = (split("\t",$_,7))[6]; 平均用時(shí)3.53s

看來(lái)后3種才是王道,如果需要使用多項(xiàng)也可以進(jìn)行進(jìn)行適當(dāng)?shù)淖儎?dòng)。不過(guò)兩項(xiàng)如果跨度比較大,3,4應(yīng)該是不錯(cuò)選擇,5就只能用中間數(shù)組。

自己動(dòng)手測(cè)試下吧。

相關(guān)文章

  • Perl文件讀取的經(jīng)典用法分享

    Perl文件讀取的經(jīng)典用法分享

    Perl文件讀取的經(jīng)典用法,有需要的朋友可以參考下
    2013-02-02
  • perl 中的or與||的區(qū)別

    perl 中的or與||的區(qū)別

    or比||優(yōu)先級(jí)低,除此之外,兩者無(wú)區(qū)別
    2013-02-02
  • Windows10下安裝配置 perl 環(huán)境的詳細(xì)教程

    Windows10下安裝配置 perl 環(huán)境的詳細(xì)教程

    Perl 最重要的特性是Perl內(nèi)部集成了正則表達(dá)式的功能,以及巨大的第三方代碼庫(kù)CPAN。這篇文章主要介紹了Windows10下安裝配置 perl 環(huán)境的詳細(xì)教程,需要的朋友可以參考下
    2020-12-12
  • 求婚示愛(ài)的Perl代碼之注釋篇

    求婚示愛(ài)的Perl代碼之注釋篇

    Deparse 模塊是一個(gè)很好的打印機(jī),它可以揭開(kāi) Perl 代碼神秘的面紗,幫助你理解優(yōu)化器為你的代碼做了那些轉(zhuǎn)換。換言之,它會(huì)重新生成Perl代碼,試著略去一些晦澀難懂的部分,把代碼用一致的格式寫出來(lái)
    2013-03-03
  • Perl 和 StrawberryPerl 與 ActivePerl 的區(qū)別詳解

    Perl 和 StrawberryPerl 與 ActivePerl 的區(qū)別詳解

    這篇文章主要介紹了Perl 和 StrawberryPerl 與 ActivePerl 的區(qū)別詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Perl實(shí)現(xiàn)高水線算法(解決多值比較問(wèn)題方法)

    Perl實(shí)現(xiàn)高水線算法(解決多值比較問(wèn)題方法)

    這篇文章主要介紹了Perl實(shí)現(xiàn)高水線算法(解決多值比較問(wèn)題方法),從本文代碼示例中還可以學(xué)習(xí)到數(shù)組遍歷、函數(shù)寫法、函數(shù)調(diào)用等知識(shí),需要的朋友可以參考下
    2015-06-06
  • Perl實(shí)現(xiàn)遍歷目錄例子

    Perl實(shí)現(xiàn)遍歷目錄例子

    這篇文章主要介紹了Perl實(shí)現(xiàn)遍歷目錄例子,本文示例運(yùn)行在Windows系統(tǒng)下,而且需要gbk編碼,需要的朋友可以參考下
    2014-12-12
  • 將Perl5代碼遷移到Perl6上的解決方案

    將Perl5代碼遷移到Perl6上的解決方案

    今天小編就為大家分享一篇關(guān)于將Perl5代碼遷移到Perl6上的解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Perl中的真與假深入研究

    Perl中的真與假深入研究

    這篇文章主要介紹了Perl中的真與假深入研究,本文詳細(xì)講解了Perl中真值與假值的不同,需要的朋友可以參考下
    2015-06-06
  • cpan安裝Net::SSH::Perl中遇到的一些問(wèn)題

    cpan安裝Net::SSH::Perl中遇到的一些問(wèn)題

    cpan安裝Net::SSH::Perl中遇到的一些問(wèn)題,需要的朋友可以參考下
    2013-02-02

最新評(píng)論