[perl] Perl切片
我们通常中关注列表当中的某几个单元. 例如, 从一个联系人记录中提取姓名和电话号码,假如每一条记录的格式都是由","分隔的:
姓名,性别,地址,邮编,电话号码。。。
当需要提取第一个和第五个字段,可以如此做:
while(<FILE>){chomp;my @items = split /,/;my($name, $num)=($items[0], $items[4]);... #继续其他操作}
但这样有些浪费,因为@items就相当于是一个临时列表,我们可以进一步改善, 引入列表:
my($name, $num)=(split /,/)[0,4];
这样一次切片便成功地对两个标量进行了赋值.
切片通常是从列表中读取少量值的最简单办法, 如果从列表中拉出第一个和最后一个值,借助下标-1代表最后一个元素的便利:
my($name, $num)=(split /,/)[0,-1];
另外对列表排序,并取出最小值与最大值:
my($first, $last) = (sort @names)[0, -1];
切片的下标顺序可以是任意的, 也可以重复.
my @names = qw{zero one two three four five six seven eight nine};my @numbers = (@names)[2, 0, 6, 0, 4];print "Numbers: @numbersn"; #打印: Numbers: two zero six zero four
对于数组切片,圆括号不是必需的, 所以前面的例子可以进一步简化:
my @numbers = @names[2, 0, 6, 0, 4];
这里的@符号代表了一组数据,方括号意味着你要检索数据,@符号则意味着获取的是列表, 不像$符号意味着获取单个元素.
所以@names[0,4]与 ($names[0], $names[4])是同样的含义。
我们还可以用切片对数组元素进行赋值:
@names[0,4] = ("Rockie", "123456");
也可以对哈希做切片操作, 与数组切片类似, 也是由@符号表示从列表中获取数据, 不同的是哈希是以花括号{}来进行检索数据的.
my %scores = (a => 90, b => 100, c=> 80);my @theirScores = @scores{qw/a, b, c/};
同时我们还可以对哈希进行赋值操作:
@scores{qw/a, b, c/}=(100, 90, 80);
[perl] Perl切片相关推荐
- php 调用 perl,perl中如何调用R语言
以下是从网上收集的从perl中调用R的方法: 1 直接用system()命令 比如有个test.R程序,可以通过下面的方式调用: system("R 2 安装模块RSperl 该模块的具体介 ...
- [perl]perl界大牛唐凤传说
转载本站文章请注明,转载自:扶凯 [http://www.php-oa.com ] 本文链接: http://www.php-oa.com/2009/11/11/perl-audrey-tang.ht ...
- [Perl]Perl匹配非空白字符[^\s]
Perl匹配非空白字符[^\s] 一.Perl匹配非空白字符[^\s] 在Perl中,[^\s]代表非空白符. [^\s]+表示一次或多次匹配非空白符. ^在括号[]外时表示开始,即行首. ...
- php美元符号 perl,Perl运算符:$| ;美元符号加上加号
我正在开发一个已经发布的perl代码的新版本,并找到了一行: $|++; AFAIK,$|与管道有关,如in this link所述,我明白这一点,但我不知道(plus plus)是什么意思. 先谢谢 ...
- [Perl]Perl中chomp和chop的区别介绍
Perl中chomp和chop的区别介绍 一.chomp是用来删除换行符. #!/usr/bin/perl $c = "abcde\n"; chomp($c); print(&qu ...
- 脚本---perl与python的比较
文章目录 一.起源和特点 二.基本数据类型 三.控制流 (一)if条件判断 (二)for循环 (三)while循环 (四)循环控制符 四.函数 (一)定义 (二)返回值 (三)调用 (四)参数 五.包 ...
- Perl特殊变量(flw等翻译)
NAME perlvar - Perl 预定义变量 DESCRIPTION 预定义名称 后面列出的名称对 Perl 来说具有特殊含义. 大多数标点名称都有合理的助记方法或类 ...
- linux下perl命令行参数,Perl One-Liners | Perl命令行学习1 -e参数
注:本内容需要点的perl编程基础,最好是读过<perl语言入门>. 本系列是自己平常学习工作中的总结,每一个实例均为我为了讲解而设置的,自己试过的,如有错误,望能见谅 Perl 命令行参 ...
- 如何运行Perl和查看帮助
*[Perl入门]如何运行Perl和获得帮助 by endo@kyxk.net **如何运行Perl 本来单独写这一章的主要目的是介绍Windows下运行Perl的配置,不过既然上面版大已经 给出了一 ...
最新文章
- 拿下两个世界第一,阿里人机对话模型成人工智能国际通用标准
- 二、python基础(列表、元组、字符串、集合、字典、文件操作,函数基本语法及特性)...
- Chain of responsibility(职责链)--对象行为型模式
- tls 使用java生成_同时使用传入和传出连接时,相互TLS身份验证存在Java问题
- python转义引号的作用_python传到前端的数据,双引号被转义的问题
- C#LeetCode刷题之#383-赎金信(Ransom Note)
- c1语言考试内容,c1证科目三考试内容
- servlet技术是否过时
- mysql 5.7日志的种类_MySQL中的六种日志类型的介绍
- java中调用 dll 动态库的简洁方法 JNative
- js先执行一个方法再往下执行_轻松理解JS中的面向对象,顺便搞懂prototype和__proto__...
- java中窗口怎么添加动态图_java 点击按钮在窗口中加载图片
- 公募权益类基金投资者盈利洞察报告
- 双人贪吃蛇@botzone算法设计
- echart的基本使用方法
- firefox、IE下的几个不同属性的方法调用
- 黑苹果 MacOS 10.15.7 Catalina 最新安装教程
- 一文了解K8s-概念详解
- c语言程序设计教程博客,嵌入式C语言教程以及C编程要素
- 橘子平台origin安装闪退?
热门文章
- 程序员带你一步步分析AI如何玩Flappy Bird
- 市值超660亿,居然之家成功借壳上市
- 清华申请退学博士作品:完全用Linux工作
- dell服务器卡在启动界面_dell服务器系统开机提示错误解决方法
- php 制作生成海报 图片合成 文字合成 上传到OSS
- 提高企业内网安全的十大防御策略(转)
- HTML认知06标签学习3
- 绘画艺术的“唯物主义”和“唯心主义”
- 回溯-LeetCode77. 组合(Python)
- 机械研究生自学python-年薪 30W 起,如何 4 个月拿下 AI 人工智能工程师 Offer?