您现在的位置:中国下载站学院中心网络编程Perl应用教程PERL基础教程 → 文章列表

Perl 的变量

作者:佚名  来源:不详  发布时间:2006-12-29 13:49:06   

减小字体 增大字体

 
 
 

1 简单变量

Perl 的 Hello World 是怎么写的呢?请看下面的程序

#!/usr/bin/perl

print "Hello World"

这个程序和前面 BASH 的 Hello World 程序几乎相同,只是第一行换成了 #!/usr/bin/perl ,还有显示的时候用的是 print,而不是 echo。有了前面 BASH 基础和 C 语言的基础,许多 Perl 的知识可以很容易的就看懂和记住,下面我们就从简单变量开始。

简单变量是标量,是 Perl 处理的最简单的数据类型。标量可以是数字(如2,3或2.5e6), 也可以是字符串。Perl 中的标量变量以美元符号 "$" 和一个字母开始,后面可以跟字母、数字和下划线,Perl 的变量区分大小写,因此 $a 和 $A 是代表不同的变量。和 BASH 中不同的是 Perl 语言中的变量即使是在最初赋值的时候也必须在变量前面加上 "$" 符号,而且 Perl 不要求 "=" 左右必须没有空格。

虽然 Perl 中和 BASH 一样,没有变量类型的概念,我们还是可以把简单变量分为数值型和字符串型来理解。在赋值时,如果是赋值成字符串,则需要在字符串两边加上双引号(或单引号);如果是数值则就不用了,而且 Perl 中还可以接受8/16(以0开头/以0x或0X开头)进制的整数,还可以接受如 2.5,-6.3e5,-2.3-e6 这样的浮点数。关于简单变量举例如下:

$a=23;

$a = "hello";

$a = 010;(表示十进制的 8)

$a = 0x10;

$a = 0X10;

和 C 语言类似,在双引号之中可以用反斜杠表示一些特殊转义字符,见下表:

结 构含 义
\n换行
\r回车
\t水平置表符
\f换页符
\b退格
\v垂直置表符
\a响铃
\eEsc
\007任一八进制ASCII值(这里007表示bell)
\x7f任一十六进制ASCII值
\cC任一“控制”字符
\\反斜杠
\"双引号
\l下一字母小写
\L以后所有字母小写直到\E
\u下一字母大写
\U以后所有字母大写直到\E
\E结束\L和\U

另外在 Perl 语言里,我们常会看到 my 这样的变量定义,如:

my $a = "local var";

这表示 $a 是一个程序块的局部变量。

2  数组

数组是标量数据的有序列表。数组可以含从 0 个元素大小 直到 你计算机内存可以支持的大小。数组用括号内以逗号分隔的一系列元素来表示。如:

@a=(1,2,3,4,5)

@a=("aka",1974,173.5)

在 Perl 中对数组变量和前面的简单变量的存储是在不同的空间中,对数组的引用需要在变量前加 "@" 符号。

数组的赋值由下面几种用法需要注意:

@a=(1,2,3);# 初始化一个整数数组。
$a=@a;# 这里表示将数组 @a 的长度赋给 $a,此时 $a 和 @a 不是一个变量,他们不在一个存储空间里,引用时不会发生混淆。
($a, $b, $c)=(1,2,3);# 这里表示将 1 赋给 $a;2 赋给 $b;3 赋给 $c;
@a=("a","b","c");# 初始化一个字符串数组。
@b=@a;# 表示把数组 @a 拷贝一份给数组 @b,@a 与 @b 不享有共同的存储空间,他们彼此分离。
@c=(@a,@b);# 表示数组 @c 拥有 @a 和 @b 的所有元素,仍然是一维数组,而不是发生了嵌套。
($a,@b)=@a;# 表示变量 $a 等于数组 @a 的第一个元素,@b 拷贝了 @a 的剩余元素。
@a=();# 表示产生或清空一个数组。
($a)=@b;变量 $a 等于数组 @b 的第一个元素的值。
@b[i]引用数组 @b 的第 i 个元素。
$b[i]如果 b 表示一个数组的话,其含义同上。
$a[i,j]=[x,y]将数组 @a 的第 i 和第 j 个元素赋值为 x 和 y。
@a[i,j]=@a[j,i]将数组 @a 的第 i 和第 j 个元素的值互相交换。


itbulo.com/post.php?action=newthread&fid=51&extra=page%3D1" title="如有错误,麻烦请及时告诉我们,谢谢。" target="_blank">我要纠错】【itbulo.com/" target="_blank">进入论坛交流】【关闭此页】【iTbulo.net/" class="lblue" target="_blank">进入博客】

3    关联数组

关联数组是 Perl 语言中特有的一种数据结构,是一个功能强大的数组,他与普通数组的不同在于关联数组不是通过整数下标来索引,而是通过“键值”进行索引。使用关联数组需要在变量前面加上 "%" 号,关联数组的格式如:

ARRAY=(key1,value1,key2,value2,key3,value3);

上面每个 key 都对应着一个 value。关联数组是存在在另外一个存储空间中,不和简单变量以及数组相混淆。

对关联数组的操作有如下规则:

  1. 在关联数组中增加、更改一对数据:ARRAY={key}=value; 在关联数组ARRAY中加上一对 key-value,要在关联数组名称前加上 $ 号,而且 key 的名称要在 {} 符号之间,最后再指定 key 所对应的 value 值。如果在这个关联数组中已经有这个 key 了.就会更改这个 key 所对应的 value 。

  2. keys(%array) 操作符可生成由关联数组 %array 中的所有当前关键字组成的列表。即返回奇数号元素(第1,3,5,7...个)的列表。

  3. values(%array) 操作符返回由关联数组 %array 中所有当前值组成的列表,即返回偶数个列表。

  4. echo(%array) 操作符返回由 关键字/值对 构成的元素对列表。对同一数组再进行此操作时返回下一对值直至结束。若没有更多的对时,echo() 返回空表。 (这在打印全部列表中很有用)

  5. 删除一对在关联数组中的数据:delete $ARRAY{key}; delete 是 Perl 所提供的函数,作用是删除关联数组中的一个 key 以及这个 key 所对应的 value。使用方法是在 delete 函数之后,指定关联数组中要删除的 key 名称。

下面是一些关联数组操作的例子:

%fred=(one,"aka",two,"free"); $a=$fred{one};# $a等于"aka"

$b=$fred{two};# $b等于"free"

$fred{two}="yes";# %fred=(one,"aka",two,"yes")

@index=keys(%fred);# @index=(one,two)

@content=values(%fred);# @content=("aka","yes")

($index,$content)=echo(%fred);# 此时 $index 的值为 one,$content 的值为 "aka",再执行一次 $index 为值为 two,$name 的值为 "yes"
@a=%fred;# 将关联数组 fred 指定给数组 a,这时 @a=(one,"aka",two,"yes")

%b=@a;# 将数组 a 指定给关联数组 b,这时 %b=(one,"aka",two,"yes")

delete $fred{one};# 将关联数组中 key 值为 one 的一对 key-value 删除,这时 %fred=(two,"yes")
%x=();#

在百度中搜索更多Perl 的变量相关网页 转贴于:中国下载站

  • 上一篇文章:Perl的简单语法(与C语言语法的异同)
  • 下一篇文章:Perl概述
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!