电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络编程 -> Perl教程
perl简介_perl教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
##########################################################################
#版权声明#
##
#本篇文章的版权为作者萧永庆先生所有.允许网路上的非营利转载.#
#作者的电子邮件地址:syc@cc.ntu.edu.tw#
##
#本文可在下列URL取得:#
#ftp://ftp.math.ncu.edu.tw/chinese/DOC/#
##########################################################################

Perl简介-$ID$

写在前面:有点懒懒的,不太想用脑筋构思文章,想看的人就忍耐一下吧。

Perl是什麽东西呢?Manual上是这样写的:PracticalExtractionandReportLanguage
它原始的目的就是用来取代UNIX原有的sed/awk与shellscript的组合,用来
汇集资讯,产生报表的一个工具语言(程式)。不过随着版本的改进,功能越来
越强,现在的功能已经超乎原先设计时的想像,几乎任何事都可以做到,也变
成每一部UNIX工作站必备的标准工具了。

Perl的作者是LarryWall,曾经贡献过好几个很有用的
程式给大家(publicdomain)使用,包括patch和rn。他设计perl时的哲学是以
实用为第一优先,(所谓的实用就是语言容易使用,有效率,而且完整),而不是设
计一个看起来很漂亮的语言。(漂亮就是程式非常的小,语法幽雅,而且只由
最少的语法基本元素构成)。Perl包含了C,sed,awk,和sh这几个工具最好(作
者(Larry)说的)的特色,而且主要的语法很接近C语言,对原本熟悉C语言
的人来说非常容易上手。

--------------------------------------------------------------------------
讲完废话,可以进入主题了。首先,我们按惯例用perl写个程式印出Hello,World
吧。首先,用你自己最喜欢的编辑器建立hello这个档案,如下:

#!/usr/local/bin/perl
#
#Programhello:printoutHello,Worldonstandardout.
#
print"Hello,World";
#endoffile

前面几个以#号开头的行在UNIX的习惯里面是释,所以实际上的程式
只有一行而已。不要忘掉print那一行最後的那个分号。还有要注意perl
会区分大小写。

不过这里有个小细节要注意,就是第一行:
#!/usr/local/bin/perl
乍看之下是释,其实它大有作用。在古早的UNIX系统里面,可执行档分作两种,
一种是包含机器指令的二进位档,系统可以直接载入执行;另外一种叫做
script档,也就是包含一些shell命令的普通文字档:UNIX一遇到这种文字档
就会自动载入/bin/sh去解译与执行它。不过随着UNIX的发展,shell越来越多,
实在不晓得script档是用哪种shell写的。所以就发展出一个机制,在每个script
档的第一行(前面不可以有空白与空白行)写个#!,然後接着写真正要负责处理这个
script的程式档路径,就可以让UNIX知道要用那个程式来处理了。另外,顺便唆一下,
这个路径後面还可以再加一个参数(oneandonlyone),如下:
#!/usr/local/bin/perl-f对
#!/usr/local/bin/perl-pi.bak对
#!perl-f-pi.bak不对->-pi.bak会被忽略。
反正写超过一个就会被忽略就对了。

好了,回归主题,要如何执行这个程式呢?有好几个方法:

1.直接在命令列打:(venus是我们shell的提示号,不用输入)
venusperlhello

2.让perl从standardinput读入perl程式:
venusperl
3.把hello改成可执行档,然後再执行:
venuschmoda xhello
venus./hello

1:如果你的$PATH(或$pathincsh)有"."(目前目录)的话
就可以不用打"./"。
2:你必须确定perl是放在/usr/local/bin/perl上,不然的话
请把这个字串改到正确的值(可能是/bin/perl,试不出来问root)。

哇!好不容易可以执行第一个程式了。结果应该就是我们期望的Hello,World了。
第二个执行的方法蛮有趣的,换句话说,你可以这样子输入perl程式:

venusperl(直接按ENTER)
print"Hello,World\n";
CTRL-D

CTRL-D就是UNIX的endoffile,perl处理命令的时候会整个档案都读入、
分析一遍後,再开始执行,所以Hello,World会在按完CTRL-D後才印出来,
而不是打print...;之後就立刻印出。
--------------------------------------------------------------------------
唆完一些背景知识後,我们可以把注意力全部集中在perl本身了。首先是
perl支援的变数型态。perl下的变数型态总共有三种:scalars(纯量),arrays
ofscalars(纯量阵列),associativearrays(相关阵列?实在不会翻,看下
面的解好了)。

Arrays(ofscalars)与Associativearrays的差别:

"一般所谓的arrays是一块连续的记忆体,它的每一个元素的大小都是一样的,
可以很快的透过数字(第几号元素)利用CPU本身的定址能力直接取出来;
而associativearrays比较像一张对照表,给定一个值(有可能是一个字串),
要先在这张表内搜寻,找到这个『键』,然後才能找到相对应的值出来。

差别就是arrays(ofscalars)速度比较快,associativearrays通常都是
利用一些资料结构达成的,比较慢,不过比较有弹性就是了。"

perl的变数不需要事先宣告,直接就可以用了。

变数以$开头,以下是几个例子:(每一行都是独立互不相的)

$days#asimplescalarvariable
$days[28]#29thelementofarray@days
$days{Feb}#onevaluefromanassociativearray
$#days#lastindexofarray@days

一整个(或者是部份的)array用@表示:

@days#($days[0],$days[1],$days[2],...$days[n])
@days[3,4,5]#sameas@days[3..5]等於($days[3],$days[4],$days[5])
@days{a,c}#($days{a},$days{c})

一整个assosiativearray用开头:

趛s#(key1,val1,key2,val2,....)

对於每一种资料型态,他们的命名空间是互相独立而不受扰的,也就是说,
$days,@days,趛s这三个符号可以同时存在而互不影响。

以上这八种表示法都可以作为lvalue,换句话说,都可以放在等号的左边,
可以设值。如下:

$d=20;
$a[18]=1;
$days{Feb}=28;
@arr=(a,b,c,d,e);
@days[3,4,5]=(1,2,3);
@days{a,c}=(Monday,Wednesday);
甚至:($s1,$s2,$s3)=$Bar(2,3,4);

ps:前面没有提到,不过应该很简单,就是常数array就是用小括号括起来形成一个
"list"就对了。字串就是用单引号或双引号括起来。详情见後面说明。

Array@classes的大小可以由$#classes的值得到。(实际上是array长度减一,
因为$#classes是@classes最後一个元素的索引(index),而通常array都是从0开始
算的)。要改变array的大小就直接改$#classes就好了。不过缩小array并不会
真的把array的资料丢掉,$#array改大後又可以取回来了。把array删掉的方法是

@array=();
$#array=$[-1;(两者同义,$[是特殊变数,表示array的基数,
就是说array是由$[开始算的;array的第一个元素.
通常$[==0)

另外,如果把array当作scalar(纯量)用的话,array会传回该array的长度。

scalar(@array)等於$#array-$[ 1(末项-前项 1=长度)
如:$len=@array;

perl没有提供多维阵列,但是有提供一些机制来利用associativearray模拟
多维阵列。例:

$foo{$a,$b,$c}=1;(等於$foo{"$a,$b,$c"}=1;)

最後,如果一个变数名称用特殊符号开头,那该名称就只能该符号有一个字元,如

$;
$$
$

等。而且这些变数通常都有一些特别的意义。


常数的使用就像一般一样:
12345
12345.67
3.1428E-10
0xffff#十六进位
0377#八进位
4_294_976_296#429976296

字串常数则用单引号或双引号括起来。他们的效力与shell下一样:双引号括起来的字串
仍然会做变数和反斜线替换,而单引号不会(除了\与\\)。如:

$h="Hello";
$w="World";
$hw="$h,$w";#Hello,World
print"Item1\tItem2\n";"Item1Item2"

反斜线替换常用的和C一样,详情请看perlmanpage.




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·perl常问问题集--第一篇_perl教程
·perl常规表达式(1)_perl教程
·perl语言全面编译(一)_perl教程
·perl语言全面编译(三)_perl教程
·perl语言全面编译(二)_perl教程
·各种平台下perl模块的安装方法_perl教程
·perl语言全面编译(四)_perl教程
·perldbi入门_perl教程
·有线电视宽带数据网络设计管理(上)_视频通信
·perl常问问题集--第一篇_perl教程

最新文章
·php5对mysql5的任意数据库表的管理代码示例(四)_php技巧
·用perl来分析并生成中文excel文件_perl教程
·photoshop基础教程:跟我学调色练习15-室内光效_photoshop教程
·使用perl连接mysql数据库_perl教程
·photoshop把照片打造为漫画艺术风格_photoshop教程
·photoshop绘制印度小美人_photoshop教程
·photoshop快速制作粗糙岩石纹理材质_photoshop教程
·用perl来分析并生成中文excel文件_perl教程
·photoshop特效设计-夜明珠_photoshop教程
·关于xsl中count()的使用_xsl教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号