跳转至内容
上海创厦网络科技
IT服务专家
上海创厦网络科技上海创厦网络科技
  • 首页
  • 网站建设
  • IT服务
  • 平面设计
  • 网络工程
  • 首页
  • 网站建设
  • IT服务
  • 平面设计
  • 网络工程

Perl split字符串分割函数用法指南

您在这里:
  1. 首页
  2. Linux技巧
  3. Perl …
5月262022
Linux技巧


导读 本文向大家简单介绍一下Perl split函数的用法,Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中。

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

Perl split函数

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

Perl split函数可以这样使用:

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

其结果是:@personal=(“Caine”,”Michael”,”Actor”,”14,LeafyDrive”);
◆如果我们已经把信息存放在$_变量中,那么可以这样:

@personal=split(/:/);

如果各个域被任何数量的冒号分隔,可以用RE代码进行分割:

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

其结果是:@personal=(“Capes”,”Geoff”,”Shotputter”,”BigAvenue”);

但是下面的代码:

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

的结果是:@personal=(“Capes”,”Geoff”,””,”Shotputter”,””,””,”BigAvenue”);

这个Perl split函数中单词可以被分割成字符,句子可以被分割成单词,段落可以被分割成句子:

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

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

//之间的部分表示split用到的正则表达式(或者说分隔法则)
s是一种通配符,代表空格
+代表重复一次或者一次以上。
所以,s+代表一个或者一个以上的空格。
split(/s+/,$line)表示把字符串$line,按空格为界分开。
比如说,$line=”你好朋友欢迎光临我的网站jb51.net”;
split(/s+/,$line)后得到:
你好朋友欢迎访问我的网站jb51.net

一般用法: @somearray = split(/:+/, $string ); #括号可以不要。 若不指定$string, 则对默认变量$_操作, 两斜线间为分割符,可以用正则表达式,强悍异常。

在perl手册里,有一个用法不多见。即: split /PATTERN/, EXPR, LIMIT; 关键就是这个LIMIT参数,可以节省不少事情。 如果使用了LIMIT,且是正数,表示分割成不多于LIMIT指定的数目的域。

通过制定LIMIT,可以在很长(分割产生几万个元素or域)的行分割操作中,只返回关键的前几列的域值,减少了内存使用及时间消耗。比如一般的基因型数据,第一列通常是材料命名,需要通过材料名的判断取舍,这时候就可以这样用。 my ($firstfield) = split /t/, $someline, 1; 如果需要前面几列的值,这样的方式对大文件效率很好: my (undef, $var1, undef, undef, undef, $var2)=split /t/, $someline, 6;

有网友对这种方式做了测试,显示较好。引用如下:
一个文件,每行都有18项,各项之间用t分割,使用时用到了第6项,折腾了几种用法

复制代码代码如下:

my @array = split(“t”,$_); my $var = $array[6]; 测试文件平均用时8.2s
my($var) = (split(“t”,$_))[6]; 测试平均用时5.1s
my(undef,undef,undef,undef,undef,undef,$var) = split(“t”,$_); 平均用时3.53s
my(undef,undef,undef,undef,undef,undef,$var) = split(“t”,$_,7);平均用时3.52s
my $var = (split(“t”,$_,7))[6]; 平均用时3.53s

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

原文来自:https://www.jb51.net/article/33924.htm

本文地址:https://www.linuxprobe.com/perl-split-string.html
编辑:薛鹏旭,审核员:逄增宝

Linux命令大全:https://www.linuxcool.com/

Linux系统大全:https://www.linuxdown.com/

红帽认证RHCE考试心得:https://www.rhce.net/

为您推荐一些与本文相关的文章:
spring cloud优雅的处理feign熔断异常
Linux基金会:开源技术将不受美国出口管制
《Kali Linux无线渗透测试指南》pdf电子书免费下载
二十九期课程培训结束。
Swift 常量讲解
360推进行业根证书计划批准谷歌入根
运营商套餐的那些坑
捷讯:王锦晨3月15日上海顺利通过RHCE认证。
新版ExTiX 诞生,基于 Ubuntu 的桌面 Linux 发行
Gartner预计明年全球数据中心基础设施支出将增长6%

Category: Linux技巧startupplaza2022年5月26日评论

作者: startupplaza

文章导航

历史的文章历史的文章:Kubernetes零信任架构未来的文章未来的文章:教你Mysql如何实现不存在则插入,存在则更新

Related Posts

简单介绍Rust中的workspace
2022年5月26日
Centos8 使用realmd加入AD域
2022年5月26日
简单探讨Golang中defer预计算参数
2022年5月26日
简单介绍Python格式化字符串的案例方法
2022年5月26日
CentOS 8 中dnf管理器如何仅下载不安装软件
2022年5月26日
简单介绍Vue中使用js制作进度条式数据对比动画
2022年5月26日

技术探讨

  • 使用HTML5捕捉音频与视频信息概述及实例
  • HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
  • 详解HTML5中的