perl基础:使用这些Perl 函数控制数组和哈希
2008-03-18 17:40
501 查看
Perl 虽因其字符串处理能力而闻名,但是这并不意味着 Perl只能做字符串处理。这种语言还提供相当多的函数来处理和操纵其它的数据结构,其中包括很流行的数组和哈希。我们这篇文章展示了一些属于这一类的非 常有用的函数,并简要解释了每个函数的工作方式以及使用它们的时机。
函数 | 解释 | 示例 |
scalar(@arr) | 这个函数将一个数组或哈希强迫解释成一个标量。当你需要得到一个数组或哈希的元素个数时,这一函数非常有用。 使用这个函数获取数组或哈希的大小,为循环以及处理数组或哈希内容做准备。 | 代码: #!/bin/perl # define array @data = ('apple', 'peach', 'banana'); # get size print "The array has " . scalar(@data) . " elements"; 输出: The array has 3 elements |
exists $hash{$key} | 这个函数可以用来测试哈希中是否存在某个特定的键。 | 代码: #!/bin/perl # define hash %data = ('king' => 'queen', 'prince' => 'princess'); # check if key exists if (exists $data{'king'}) { print "Found!"; } 输出: Found! |
push(@arr, $val) | 这个函数向数组的末尾添加一个新元素。 | 代码: #!/bin/perl # define array @data = ('a', 'b', 'c'); # add element push(@data, 'd'); 输出: a b c d |
pop(@arr) | 这个函数从数组的末尾删除一个元素。 | 代码: #!/bin/perl # define array @data = ('a', 'b', 'c'); # add element pop(@data); print "@data "; 输出: a b |
unshift(@arr, $val) | 这个函数向数组的开头添加一个新元素。 | 代码: #!/bin/perl # define array @data = ('a', 'b', 'c'); # add element unshift(@data, 'z'); print "@data "; 输出: z a b c |
shift(@arr) | 这个函数从数组的开头删除一个元素。 | 代码: #!/bin/perl # define array @data = ('a', 'b', 'c'); # remove element shift(@data); print "@data "; 输出: b c |
splice(@arr, $offset, $length, @arr2) | 这个函数删除数组中的某一个子集,被删除的子从$offset指定的位置开始,长度为$length个元素。如果可选参数@arr2出现,那么被提取的一段元素将会替换为数组@arr2。 使用这个函数可以提取数组的一个子集,也可以使用新值替换一个数组中的某些元素。 | 代码: #!/bin/perl # define array @data = ('king', 'queen', 'knight', 'bishop'); # remove middle elements splice(@data, 1, 2); print "@data "; 输出: king bishop |
delete $hash{$key} | 这个函数从一个哈希中删除一个键,以及与这个键关联的值。 使用这个函数可以从哈希中删除元素。 | 代码: #!/bin/perl # define hash %data = ('king' => 'queen', 'prince' => 'princess'); # remove element with key 'king' delete $data{'king'}; |
split($delim, $str) | 这个函数使用$delim将一个字符串分解,并返回一个以数字为索引的数组,返回数组的元素为原始字符串中由$delim分隔的各个部分。这些元素可以在一个循环中处理。 使用这个函数可以将逗号分隔的列表分割成独立的数组元素。 | 代码: #!/bin/perl # define string $str = "cat,hog,dog,log"; # split string on comma delimiter @words = split(",", $str); foreach $w (@words) { print "$w/n"; } 输出: cat hog dog log |
join($sep, @arr) | 这个函数将一个数组的各个元素组合成一个单一的字符串,原来的各个元素使用$sep的值分隔。 使用这个函数可以将多个独立的数组元素组合成一个单一的字符串,而新组合成的字符串由空格、逗号或其它分隔符隔开。 | 代码: #!/bin/perl # define array @data = ("Harry", "Joan", "Tom"); # create string from arrayprint join(" and ", @data) . " are friends"; 输出: Harry and Joan and Tom are friends |
keys(%hash) | 这个函数将哈希的键返回为一个以数字为索引的数组。这个函数与下面将要讨论的values()函数功能正好相对。 使用这个函数可以将一个哈希的键提取为一个独立的数据结构,用于以后的处理。 | 代码: #!/bin/perl # define hash %data = ('a' => 'apple', 'b' => 'bat', 'c' => 'cat'); # get and print hash keys @keys = keys(%data); 输出: c a b |
values(%hash) | 这个函数将哈希的值返回为一个以数字为索引的数组。这个函数与前面讨论的keys()函数功能正好相对。 使用这个函数将一个哈希的值提取为一个独立的数据结构,用于以后的处理。 | 代码: #!/bin/perl # define hash %data = ('a' => 'apple', 'b' => 'bat', 'c' => 'cat'); # get and print hash keys @vals = values(%data); foreach $v (@vals) { print "$v "; } 输出: cat apple bat |
reverse(@arr) | 这个函数将数组元素的次序翻转,将最后一个元素放在第一个,同样,将第一个元素放在最后。 使用这个函数可以将数组的元素的顺序调整为与当前顺序完全相反。 | 代码: #!/bin/perl # define array @data = ('apple', 'peach', 'banana'); # reverse array @rev = reverse(@data); print "@rev "; 输出: banana peach apple |
sort(@arr) | 这个函数可以用来对数组或哈希进行排序。缺省情况下,这个函数使用标准的字符串对比规则进行排序;然而,你可以通过传入一个自定义排序子函数的名字来覆盖其缺省行为。 使用这个函数可以重置数组元素的内部顺序,或者以字母序、数字序或者自定义序来重新排列数组。 | 代码: #!/bin/perl # define hash @data = ('oranges', 'peaches', 'grapes', 'apples', 'lemons'); # sort alphabetically @sorted = sort(@data); print "@sorted "; 输出: apples grapes lemons oranges peaches |
相关文章推荐
- 使用这些Perl 函数控制数组和哈希
- 使用这些Perl 函数控制数组和哈希
- java基础(一):进制,运算符,流程控制,函数,数组
- Java语言基础组成之:程序流程控制、函数、数组
- PHP学习笔记——使用数组的内部指针控制函数遍历数组
- 黑马程序员_java基础(2) 流程控制语句&函数与数组
- Scala进阶源码实战之一——数组、函数基础、流程控制、文件、异常
- Java基础应用之循环控制(使用while与自增运算符循环遍历数组)
- 1.python语法基础-列表、数组、函数、元组和控制语句
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
- Perl函数参数中传递数组和引用的使用
- C语言基础之函数、虚拟键盘的使用、数组、指针、动态申请内存、内存泄漏
- Java基础——程序流程控制、函数与数组
- 黑马程序员——java基础---流程控制、函数、数组
- 基础学习day03---程序结构与控制、函数与数组入门
- 黑马程序员_Java基础(流程控制、函数、数组)
- 黑马程序员 JAVA初级-编程基础2 流程控制语句 函数 数组
- Perl函数参数中传递数组和引用的使用
- 基础备忘:函数模板在数组中的使用
- 快学Scala学习笔记及习题解答(1-4基础、控制、函数、数组、元组和映射)