我们通常中关注列表当中的某几个单元. 例如, 从一个联系人记录中提取姓名和电话号码,假如每一条记录的格式都是由","分隔的:

姓名,性别,地址,邮编,电话号码。。。

当需要提取第一个和第五个字段,可以如此做:

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切片相关推荐

  1. php 调用 perl,perl中如何调用R语言

    以下是从网上收集的从perl中调用R的方法: 1 直接用system()命令 比如有个test.R程序,可以通过下面的方式调用: system("R 2 安装模块RSperl 该模块的具体介 ...

  2. [perl]perl界大牛唐凤传说

    转载本站文章请注明,转载自:扶凯 [http://www.php-oa.com ] 本文链接: http://www.php-oa.com/2009/11/11/perl-audrey-tang.ht ...

  3. [Perl]Perl匹配非空白字符[^\s]

    Perl匹配非空白字符[^\s] ​​​​​ 一.Perl匹配非空白字符[^\s] 在Perl中,[^\s]代表非空白符. [^\s]+表示一次或多次匹配非空白符. ^在括号[]外时表示开始,即行首. ...

  4. php美元符号 perl,Perl运算符:$| ;美元符号加上加号

    我正在开发一个已经发布的perl代码的新版本,并找到了一行: $|++; AFAIK,$|与管道有关,如in this link所述,我明白这一点,但我不知道(plus plus)是什么意思. 先谢谢 ...

  5. [Perl]Perl中chomp和chop的区别介绍

    Perl中chomp和chop的区别介绍 一.chomp是用来删除换行符. #!/usr/bin/perl $c = "abcde\n"; chomp($c); print(&qu ...

  6. 脚本---perl与python的比较

    文章目录 一.起源和特点 二.基本数据类型 三.控制流 (一)if条件判断 (二)for循环 (三)while循环 (四)循环控制符 四.函数 (一)定义 (二)返回值 (三)调用 (四)参数 五.包 ...

  7. Perl特殊变量(flw等翻译)

    NAME     perlvar - Perl 预定义变量 DESCRIPTION   预定义名称     后面列出的名称对 Perl 来说具有特殊含义.     大多数标点名称都有合理的助记方法或类 ...

  8. linux下perl命令行参数,Perl One-Liners | Perl命令行学习1 -e参数

    注:本内容需要点的perl编程基础,最好是读过<perl语言入门>. 本系列是自己平常学习工作中的总结,每一个实例均为我为了讲解而设置的,自己试过的,如有错误,望能见谅 Perl 命令行参 ...

  9. 如何运行Perl和查看帮助

    *[Perl入门]如何运行Perl和获得帮助 by endo@kyxk.net **如何运行Perl 本来单独写这一章的主要目的是介绍Windows下运行Perl的配置,不过既然上面版大已经 给出了一 ...

最新文章

  1. 拿下两个世界第一,阿里人机对话模型成人工智能国际通用标准
  2. 二、python基础(列表、元组、字符串、集合、字典、文件操作,函数基本语法及特性)...
  3. Chain of responsibility(职责链)--对象行为型模式
  4. tls 使用java生成_同时使用传入和传出连接时,相互TLS身份验证存在Java问题
  5. python转义引号的作用_python传到前端的数据,双引号被转义的问题
  6. C#LeetCode刷题之#383-赎金信(Ransom Note)
  7. c1语言考试内容,c1证科目三考试内容
  8. servlet技术是否过时
  9. mysql 5.7日志的种类_MySQL中的六种日志类型的介绍
  10. java中调用 dll 动态库的简洁方法 JNative
  11. js先执行一个方法再往下执行_轻松理解JS中的面向对象,顺便搞懂prototype和__proto__...
  12. java中窗口怎么添加动态图_java 点击按钮在窗口中加载图片
  13. 公募权益类基金投资者盈利洞察报告
  14. 双人贪吃蛇@botzone算法设计
  15. echart的基本使用方法
  16. firefox、IE下的几个不同属性的方法调用
  17. 黑苹果 MacOS 10.15.7 Catalina 最新安装教程
  18. 一文了解K8s-概念详解
  19. c语言程序设计教程博客,嵌入式C语言教程以及C编程要素
  20. 橘子平台origin安装闪退?

热门文章

  1. 程序员带你一步步分析AI如何玩Flappy Bird
  2. 市值超660亿,居然之家成功借壳上市
  3. 清华申请退学博士作品:完全用Linux工作
  4. dell服务器卡在启动界面_dell服务器系统开机提示错误解决方法
  5. php 制作生成海报 图片合成 文字合成 上传到OSS
  6. 提高企业内网安全的十大防御策略(转)
  7. HTML认知06标签学习3
  8. 绘画艺术的“唯物主义”和“唯心主义”
  9. 回溯-LeetCode77. 组合(Python)
  10. 机械研究生自学python-年薪 30W 起,如何 4 个月拿下 AI 人工智能工程师 Offer?