Linux 版 (精华区)
发信人: tcpip (偶的昵称改了), 信区: Linux
标 题: 我所知道的Perl--变量2
发信站: 紫 丁 香 (Sat Feb 26 20:14:57 2000), 转信
****************************************************************************
本文不是perl的完整手册,这只是我的一点收集和整理.不能说是完整意义上的创作,听
前辈说写东西有两种境界,一种是写,一种是编.我是属于后者, 东拼西凑再加上自己使
用perl以来的体会,于是有了此文. 希望通过这个东西能让大家对perl有比较清晰的感
觉,更希望工大喜欢perl的人多起来.
本文可以随意转载(删改后请给我一份),但只限于网络媒体!
****************************************************************************
第二章 Perl 的变量(第二部分)
2.2 数组
2.2.1 基本常识
数组可以说是标量的组合,序号从0开始,大小没有限制,可以动态的添加,随意
申请,但是要小心你的内存,很可能Perl为了给你分配数组空间的时候用光了你的内存,
Windows下容易死机.数组用@标示.使用上和标量类似.如:
1.@array=(1,2,3,4,5,6,7,8,9);
2. @array=(1..9);
这两个等价,从中可以发现Perl在易用快速方面做了多少工作.对于@array这个数组来说,
$array[0]=1,$array[1]=2,注意:这里用'$'.
3.@array[1,2,3]=@array[3,2,1],猜猜它做了什么?交换?猜对了!结果是什么?自己试
试看就知道了.
4.$length=@array,这又做了什么?不用猜了,$length保存了@array的元素个数.
2.2.2 常用函数
push(),pop(),末尾压/弹元素
shift(),unshift(),开头取/加元素
splice(),对数组中间操作
split(),分割
reverse(),颠倒排序
join(),数组变标量
undef(),清空
chop(),chomp(),
sort(),排序
2.3 哈希变量
2.3.1 基本常识
哈希变量也是标量的组合,不同的是,这里有键和值的对应关系.使用上同样不用担心
大小,越界问题,随用随申请.例如:
1.%hash={'key1','value1','key2','value2'},
%hash={'key1'=>'value1','key2'=>'value2'},
这两个等价,但是Perl4并不支持第二种形式.
2.%hash{'key1'}='value1'
这是哈希的附值.
需要注意的是,哈希的内部存储格式和附值的次序无关,在哈希内部没有次序的概念,对它的
操作要通过keys(),values(),each(),delete(),undef(),exist()等函数来操作.对哈希的
直接打印不会有任何结果.
2.4 句柄
2.4.1 基本常识
对Unix类操作系统来讲,句柄是一个必不可少的东西,很多实现都要通过句柄来操作,对
文件,对进程,对目录,对socket等等都是通过句柄来完成的,Perl当然不能少了这方面的能力!
Perl提供了文件句柄和目录句柄来实现这些.句柄用大写来识别.使用时如下:
1.open(IN,"<filename");
这将会打开filename文件,和句柄IN联系,打开为读方式,如果换成'>',则为写方式,同时
还有'>>'的填加写方式.
2.open(IN,"process |");
将打开process进程来读,同样'|'置前则为写.前面我利用这个方法写了一个bbs自动登陆
的东西,可以实现登陆机器人,防发呆等功能.十分有效.
3.$line=<IN>;
这实现了从IN句柄中读一行
4.@array=<IN>;
这则将IN中所有的内容读到@array中,但要小心你的内存!
5.print OUT $line;
print OUT @array;
则是往OUT句柄里写
6.close IN;
关闭句柄
注意,虽然Perl在退出的时候会帮你关闭句柄,但是显示的关闭是一个好习惯!
小结:
Perl的数据类型只有这几种,他们还可以组合,比如在哈希中值为另一个哈希结构等等.但
这些不常用到,本文也不是Perl的详细教程,不在详述.
--
"这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: tcpip.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.310毫秒