Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209542
  • 博文数量: 43
  • 博客积分: 2501
  • 博客等级: 少校
  • 技术积分: 485
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 21:45
文章分类

全部博文(43)

文章存档

2011年(3)

2010年(1)

2009年(21)

2008年(18)

我的朋友

分类:

2009-04-05 13:48:30

Perl只有三种基本数据类型,标量(scaler)、数组(array)和哈希(hash)。其中scaler用$name表示,scaler包括数 字、字符串、引用三种;array用@name表示,其元素是scaler,类型可以不同,下标从0开始,$#array返回array的最后一个元素的 下标;hash用%name表示,其元素是K=>V对,K是字符串,V任意。Perl的Boolean中数字0,数字0对应字符串'0',空字符串 为False,其它都为True。


array和hash的定义


@array = (item0, item1, item2);
$array[1] == item1;

%hash = (k0, v0, k1, v1, k2, v2); 或者
%hash = (
k0 => v0,
k1 => v1,
k2 => v2,
);
$hash{k0} == v0;

另外(item0, item1, item2)定义一个array的引用,{ k0 => v0, k1 => v1, k2 => v2,}定义一个hash的引用。



scaler 上下文和list上下文

Perl的上下文由需要值的部分觉得,例如赋值语句由左边决定上下文,函数或关键字由参数类型决定上下文。表达式根据上下文返回合适的值,如@array在scaler上下文中返回元素个数,在list上下文中返回数组。


typeglob


typeglob是perl中一个比较令人奇怪的东西,简单的说,就是一个名字对应多个种类的变量。typeglob用*name表示,通过$name, @name, %name, &name可以分别访问到名为name的标量、数组、哈希和函数,所以Perl中不同种类的变量可以使用同一个名字,$name和@name是两 个不同的变量。

typeglob的主要用途是用于变量别名,例如*a = *b;之后的代码中可以用$a代替$b、@a代替@b等。更安全的方式是*a = \$b;这样$a还是代替$b,但是@a不能代替@b。Perl正式利用typeglob来管理package的。


关于perl数据类型的详细文档请参考perldoc perldata。
阅读(3743) | 评论(0) | 转发(0) |
0

上一篇:Perl编程风格

下一篇:Perl包和模块

给主人留下些什么吧!~~