`
haiouc
  • 浏览: 118512 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

perl split函数

    博客分类:
  • Perl
 
阅读更多

Perl中的一个非常有用的函数是split, split 把字符串进行分割并把分割后的结果放入数组中。这个函数使用规则表达式(RE),如果未特定则工作在$_变量上。

 

split函数可以这样使用:
$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);
其结果是:
@personal = ("Caine", "Michael", "Actor", "14, Leafy Drive");

 

如果我们已经把信息存放在$_变量中,那么可以这样:
@personal = split(/:/);

 

如果各个域被任何数量的冒号分隔,可以用RE代码进行分割:
$_ = "Capes:Geoff::Shot putter:::Big Avenue";
@personal = split(/:+/);

其结果是
@personal = ("Capes", "Geoff", "Shot putter", "Big Avenue");

但是下面的代码:
$_ = "Capes:Geoff::Shot putter:::Big Avenue";
@personal = split(/:/);

的结果是
@personal = ("Capes", "Geoff", "", "Shot putter", "", "", "Big Avenue");


单词可以被分割成字符,句子可以被分割成单词,段落可以被分割成句子:

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

在第一句中,空字符串在每个字符间匹配,所以@chars数组是一个字符的数组。>>

=======================================================

才学习perl,前几天偶然发现split的几种用法,就测试了一下各种用法的效率。

 

先引用一段split的手册:
split /PATTERN/, EXPR, LIMIT
split /PATTERN/, EXPR
split /PATTERN/
split


这个函数扫描字串中 EXPR 给出的分隔符,并且把该字串劈成一个子字串列表,在列表环境中返回生成的列表值,或者在标量环境中返回子字串的数量。(注:标量环境同时还令 split 把它的结果写到 @_,不过这个用法现在废弃了。)分隔符是用重复的模式匹配进行判断的,用的是 PATTERN 里给出的正则表达式,因此分隔符可以是任意大小,并且不一定在每次匹配都是一样的字串。(分隔符不象平常那样返回;我们在本节稍后讨论例外情况。)如果 PATTERN 完全不能匹配该字串,那么 split 把原始字串当作子字串返回。如果它匹配了一次,那么你就得到两个子字串,以此类推。你可以在 PATTERN 里使用正则表达式修饰词,比如 /PATTERN/i,/PATTERN/x,等等。如果你以模式 /^/ 进行分裂,那么就假设是 //m 修饰词。


如果声明了 LIMIT 并且是正的,该函数分裂成不超过那么多的域(当然如果它用光了分隔符,那么是可以分裂成比较少的子字串的)。如果 LIMIT 是负数,那就把它当作声明了任意大的 LIMIT。如果省略了 LIMIT 或者是零,那么将从结果中删除结尾的空域(那些潜在的 pop 用户应该好好记住)。如果省略了 EXPR,那么该函数就分裂 $_ 字串。如果还省略了 PATTERN 或者它是一个文本空格,“ ”,那么该函数对空格进行操作,/\s+/,但是忽任何开头的空格。

 

这天看见一个文件,每行都有18项,各项之间用\t分割,使用时用到了第6项,话说这天正好求知欲比较强,就折腾了几种用法
1. my @array = split("\t",$_); my $var = $array[6];   测试文件平均用时8.2s
2. my($var) = (split("\t",$_))[6];  测试平均用时5.1s
3. my(undef,undef,undef,undef,undef,undef,$var) = split("\t",$_);  平均用时3.53s
4. my(undef,undef,undef,undef,undef,undef,$var) = split("\t",$_,7);  平均用时3.52s
5. my $var = (split("\t",$_,7))[6]; 平均用时3.53s

看来后3种才是王道,如果需要使用多项也可以进行进行适当的变动。不过两项如果跨度比较大,3,4应该是不错选择,5就只能用中间数组。

分享到:
评论

相关推荐

    Perl 常用函数 初学PERL

    `print` 是Perl中最常用的输出函数之一,用于将数据发送到指定的文件句柄,默认是 `STDOUT`。使用方法如下: ```perl print "Hello, World!\n"; # 输出到屏幕 print STDOUT "Hello, World!\n"; # 同上 ``` `print` ...

    perl常用函数

    在 Perl 中,split 函数还有很多其他的用法,例如在 CGI 应用程序中,split 函数可以用于解析FORM 数据字段,并将其分割成多个变量。 Perl 语言的设计哲学是基于人类语言的结构和思维方式,具有很强的可读性和可...

    perl 函数全集(绝版)

    Perl函数全集中,可能还涵盖了正则表达式相关的函数,如**match** (`m//`),**replace** (`s///`),**split** (`split//`),以及模式匹配的相关辅助函数如**quotemeta**,**length**等。 此外,Perl还有许多高级...

    Perl函数全集

    "Perl函数全集"是一个集合了Perl语言中各种内置函数的资源,它相当于Perl程序员的工具箱,帮助开发者快速查找并理解不同函数的功能和用法。这篇概述将深入探讨Perl中的主要函数类别及其应用。 1. **字符串操作函数*...

    perl函数手册(英文版)

    perl函数手册英文版 Perl提供了可以直接调用的、数目众多的函数。可以对以下对象进行操作: 数组:chomp, join, keys, map, pop, push, reverse, shift, sort, splice, split, unshift, values 数据库:dbmclose, ...

    perl中常用系统函数

    ### Perl中常用系统函数详解 #### 一、`print`函数 `print`函数是Perl中最常用的输出数据的函数之一,它可以将数据输出到指定的文件句柄(filehandle)或者标准输出设备如屏幕。 ##### **语法** ```perl print ...

    Perl函数集锦

    ### Perl函数集锦 #### 概述 Perl作为一种强大的脚本语言,在Web开发、系统管理、文本处理等领域有着广泛的应用。Perl内置了大量的函数,这些函数为开发者提供了丰富的工具箱,帮助他们快速解决问题。本文将详细...

    Perl 教程 编程参考 函数全集

    Perl提供了大量的内置函数,用于各种操作,例如字符串处理、数学运算、文件I/O等。例如: 1. `print`:输出信息到标准输出。 2. `length`:返回字符串或数组的长度。 3. `join`:使用指定的分隔符连接数组元素成一个...

    perl函数说明

    "perl函数说明"是指Perl语言中的各种内置函数和模块方法的详细解释。`perldoc-html.tar.gz`是一个压缩文件,其中包含了Perl官方的文档,通常以HTML格式提供,方便开发者查阅和学习。 Perl函数是Perl编程中的基本...

    Perl正则表达式,常用函数和变量

    以上就是Perl正则表达式,常用函数和变量的一些基础知识。通过熟练掌握这些,你可以更高效地处理文本和数据,实现各种复杂的字符串操作。在实际编程中,不断实践和查阅文档是提升Perl正则表达式技能的关键。

    PERL5教程,函数全集与CGI应用

    2. **字符串操作**: Perl提供了丰富的内建函数来处理字符串,如`length`用于获取字符串长度,`index`用于查找子字符串,`substr`用于提取子串,`join`用于连接数组元素等。 3. **正则表达式**: Perl的正则表达式...

    Perl_examples_perl语言_Perl_

    2. **字符串操作**:Perl提供丰富的字符串操作函数,如`length`用于获取字符串长度,`substr`用于截取子串,`join`和`split`分别用于连接和分割字符串。双引号内的字符串可以进行变量插值。 3. **正则表达式**:...

    Perl语言参考手册中文htmlPerl语言参考手册中文html

    5. **函数**:Perl内置了大量的内建函数,如print、chomp、join、split等,同时用户也可以自定义函数。函数可以接受参数,并通过返回值传递结果。 6. **模块**:Perl的模块机制允许开发者复用代码,提高开发效率。...

    Perl编程思想 Perl编程思想

    2. 函数:Perl拥有大量的内置函数,如print、chomp、split等,同时也支持自定义函数。 3. 控制结构:Perl支持if-else、while、for等控制流结构,以及条件运算符和三元运算符。 4. 模块系统:Perl的模块系统(CPAN...

    Perl 实例精解(第三版).pdf

    4.4.12 split函数 4. 4.13 sort函数 4.4.14 reverse函数 4.4.15 unshift函数 4.5 散列(关联数组)函数 4.5.1 keys函数 4.5.2 values函数 4.5.3 each函数 4.5.4 delete函数 4.5.5 exists...

    perl24 perl编程指南

    例如,print函数用于输出数据,split函数可以将字符串分割成数组,join函数则能将数组元素连接成字符串。了解和熟练运用这些函数能极大地提高编程效率。 Perl还支持正则表达式,这是一种强大的文本匹配工具。通过...

    perl 函数 总结

    ### Perl函数总结与详解 #### 一、Perl简介与特点 Perl是一种高级脚本语言,由Larry Wall在1986年开发,广泛应用于文本处理、系统管理等场景。Perl的特点在于其强大的文本处理能力、丰富的内置函数以及跨平台性。...

    超好perl学习教程

    Perl有丰富的内置函数库,如`print`用于输出,`open`用于文件操作,`split`用于字符串分割,等等。 总的来说,"超好perl学习教程"是一个全面的资源,涵盖了Perl语言的基础到高级主题,包括语法、正则表达式、文件...

    神奇的perl-最佳Perl入门

    - Perl中的子程序(函数)定义使用`sub`关键字。例如: ```perl sub add { my ($a, $b) = @_; return $a + $b; } ``` #### 操作符 - **算术操作符**:`+`、`-`、`*`、`/`、`%`等。 - **自增与自减**:`++`、...

Global site tag (gtag.js) - Google Analytics