Perl Pop和Perl Push操作异同之处

开发 架构
本文向大家简单介绍一下Perl Pop和Perl Push操作,。如果使用Perl Pop,Perl Push和类似的操作符以避免使用索引,那你的程序通常会比大量使用索引的情况要快。

本文和大家重点讨论一下Perl Pop和Perl Push操作,可以使用新的,更大的索引(index)将新值存放在数组的末尾。但实际上,Perl程序员不使用索引,因此,在下面几段中,我们将介绍几种不使用索引来操作数组的方法。

Perl Pop和Perl Push操作

可以使用新的,更大的索引(index)将新值存放在数组的末尾。但实际上,Perl程序员不使用索引,因此,在下面几段中,我们将介绍几种不使用索引来操作数组的方法。

当然,我们是在开玩笑,但这个玩笑基于Perl的一些事实。数组中使用索引并没有发挥Perl的威力。如果使用Perl Pop,Perl Push和类似的操作符以避免使用索引,那你的程序通常会比大量使用索引的情况要快,而且能避免"差一位(off-by-one)"类型的错误,这类错误通常叫做"边界值错误"。有时,一个初级的Perl程序员(想比较Perl和C的速度)将针对C优化过的排序程序(有大量的索引操作),用Perl来直接实现(从而有大量的索引操作),惊讶于它为什么如此慢。答案是,"用小提琴来订钉子不是一个好办法"。

通常将数组类似于栈来使用,在其右边添加或者删除数据。(这是数组中"***"一个元素,其索引***)。这些操作经常出现,因此提供了特殊的函数。

◆pop操作将数组的***一个元素取出并返回:

@array=5..9;
$fred=pop(@array);#$fred得到9,@array现在为(5,6,7,8)
$barney=pop@array;#$barneygets8,@array现在为(5,6,7)
pop@array;#@array现在为(5,6)(7被丢弃了)
***一个例子中,pop使用在"inavoidcontext",也就是说没有存放其返回值的地方。这样使用pop是合法的。

如果数组为空,那pop什么也不做(因为没有元素可以移出),并返回undef。

你可能已注意到pop后可以使用或者不使用括号。这在Perl中是一条通用规则:如果去掉括号含义不变,那括号就是可选的。和pop相反的操作是Perl_Push,它可以将一个元素(或者一列元素)加在数组的末尾:
◆受过相应教育的人将发现,这是同义反复。
Perl Push(@array,0);#@array现在为(5,6,0)
Perl Push@array,8;#@array现在为(5,6,0,8)
Perl Push@array,1..10;#@array现在多了10个元素
@others=qw/90210/;
Perl Push@array,@others;#@array现在又多了5个元素(共有19个)
Perl Push的***个参数或者pop的唯一参数必须是数组变量。

出自:http://www.kklinux.com/html/biancheng/Perl/200901/26-2834.html

【编辑推荐】

  1. 实例解析Perl substr函数应用
  2. Perl模式匹配参数使用详解
  3. Windows下Perl开发环境的安装和配置
  4. 学习笔记 Perl split函数用法指导
  5. Perl多进程及其和多线程的关系解析

 

 

责任编辑:佚名 来源: kklinux.cn
相关推荐

2010-07-20 15:02:20

Perl数组

2010-07-19 13:49:17

Perl函数

2010-07-19 09:16:47

Perl包

2010-07-21 14:18:27

Perl函数

2010-07-19 11:12:43

Perl 不等于

2010-07-20 14:41:55

Perl语法

2010-07-20 16:05:07

Perl包

2010-07-19 10:01:57

Perl函数

2010-07-13 16:34:34

Perl 哈希表

2010-07-21 09:50:51

Perl调试

2010-07-21 13:27:06

Perl模式匹配

2010-07-15 14:01:10

Perl目录句柄

2010-07-14 14:18:51

Perl操作符

2010-07-19 11:00:24

Perl操作符

2010-07-14 14:30:31

Perl操作符

2010-07-13 11:25:42

Perl双引号

2010-07-20 10:02:15

Perl类

2009-08-27 11:07:35

ibmdw云计算

2009-08-27 11:09:52

ibmdw云计算

2010-07-13 12:50:47

Perl变量
点赞
收藏

51CTO技术栈公众号