首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(1) | 引用(0) | 阅读7552次
perl 语法 函数 学习 笔记

Perl 是 Practical Extraction and Report Language (实用摘录和报告语言)的简称,是由 Larry Wall 所发起的。现在其最新版本为5.0,

Perl 是一种解释运行的语言,和 BASH 程序一样,一般 Perl 程序的第一行需注明自己是一个 Perl 程序而不是 Shell 程序,所以一般将下面一行语句:
  #! /usr/bin/perl   作为文件的第一行。
Perl 0 introduced Perl to my officemates.
    Perl 1 introduced Perl to the world, and changed /\(...\|...\)/ to
        /(...|...)/.  \(Dan Faigin still hasn't forgiven me. :-\)
    Perl 2 introduced Henry Spencer's regular expression package.
    Perl 3 introduced the ability to handle binary data (embedded nulls).
    Perl 4 introduced the first Camel book.  Really.  We mostly just
        switched version numbers so the book could refer to 4.000.
    Perl 5 introduced everything else, including the ability to
        introduce everything else.
环境变量          意义
 
SERVER_NAME CGI脚本运行时的主机名和IP地址.
SERVER_SOFTWARE 你的服务器的类型如: CERN/3.0 或 NCSA/1.3.
GATEWAY_INTERFACE 运行的CGI版本. 对于UNIX服务器, 这是CGI/1.1.
SERVER_PROTOCOL 服务器运行的HTTP协议. 这里当是HTTP/1.0.
SERVER_PORT 服务器运行的TCP口,通常Web服务器是80.
REQUEST_METHOD POST 或 GET, 取决于你的表单是怎样递交的.
HTTP_ACCEPT  浏览器能直接接收的Content-types, 可以有HTTP Accept header定义.
HTTP_USER_AGENT 递交表单的浏览器的名称、版本 和其他平台性的附加信息。
HTTP_REFERER 递交表单的文本的 URL,不是所有的浏览器都发出这个信息,不要依赖它
PATH_INFO 附加的路径信息, 由浏览器通过GET方法发出.
PATH_TRANSLATED 在PATH_INFO中系统规定的路径信息.
SCRIPT_NAME 指向这个CGI脚本的路径, 是在URL中显示的(如, /cgi-bin/thescript).
QUERY_STRING 脚本参数或者表单输入项(如果是用GET递交). QUERY_STRING 包含URL中问号后面的参数.
REMOTE_HOST 递交脚本的主机名,这个值不能被设置.
REMOTE_ADDR 递交脚本的主机IP地址.
REMOTE_USER 递交脚本的用户名. 如果服务器的authentication被激活,这个值可以设置。
REMOTE_IDENT 如果Web服务器是在ident (一种确认用户连接你的协议)运行, 递交表单的系统也在运行ident, 这个变量就含有ident返回值.
CONTENT_TYPE 如果表单是用POST递交, 这个值将是 application/x-www-form-urlencoded. 在上载文件的表单中, content-type 是个 multipart/form-data.
CONTENT_LENGTH 对于用POST递交的表单, 标准输入口的字节数.

Perl 中的标量变量以美元符号 "$" 和一个字母开始,后面可以跟字母、数字和下划线,Perl 的变量区分大小写
my $a = "local var"; 这表示 $a 是一个程序块的局部变量。

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

关联数组是 Perl 语言中特有的一种数据结构,是一个功能强大的数组,他与普通数组的不同在于关联数组不是通过整数下标来索引,而是通过“键值”进行索引。使用关联数组需要在变量前面加上 "%" 号,关联数组的格式如:
ARRAY=(key1,value1,key2,value2,key3,value3); 上面每个 key 都对应着一个 value。关联数组是存在在另外一个存储空间中

* $z=$x*$y 将$x和$y相乘之后,再将结果指派给$z
** $z=$x**$y 将$x乘以$y之后,再将结果指派给$z
**= $x**=$y; $x=$x**$y; 将$x乘上$y次方之后再指派给$x

在 BASH 脚本程序中,我们用 read var 来实现从键盘的输入,用 echo $var 来实现输出。那么在 Perl 中将有一点变化。Perl 中将标准输入用关键词 <STDIN> 表示;标准输出用 <STDOUT> 表示,标准错误输出用 <STDERR> 表示。故而从标准输入读取数据可以写成:
$var=<STDIN>; # 读取一行输入,并存入变量 $var 中。
@var=<STDIN>; # 读取多行输入,并存入数组 @var 中。
在 Perl 语言中,变量 $_ 是许多操作符的缺省变量。

Perl 语言中有两种函数,一种是 Perl 自带的一些实用系统函数,如文件打开函数 open 等;另一种是用户自定义的函数,用户通过自己定义函数可以使得程序的结构化更加清晰。
用户函数又称子程序(Subroutine),在 Perl 中用下面的结构来定义用户函数:
  sub 子程序名{      语句块;   }
这里的子程序名与变量的取名规则类似。
与 BASH 程序不同,Perl 中的用户函数的定义可以位于程序的任何位置,比如说放在文件的未尾,而并不需要放在调用该函数的代码之前。如果两个子程序使用了相同的程序名,位置靠后的子程序将覆盖前面子程序。
需要注意的是用户函数中的变量默认为全局变量,并不是像 C 语言中那样是局部变量,Perl 函数中的变量可以被其他程序段共享。如果希望定义局部变量,可以用下面两种方法来实现:
local($a); my $a;
另外用户函数的调用:通过在子程序前加“&”符号才可以,函数可在任一表达式内被调用。函数调用可以嵌套,即子程序中可以再调用另外的子程序,即可以程序员可以用 Perl 写出具有递归特性的代码。

在 Perl 程序中如何向函数中传递参数呢?这是可以实现的,调用函数时,可以将参数依次放在函数名后面的 "()" 中,而在函数体中,系统默认数组 @_ 中就按同样顺序存放着所有的参数。我们可以访问 @_ 变量,从而确定参数的个数及其数值。
仍以加法函数为例:sub add_a_b{   $_[0]+$_[1]; }

http://263.aka.org.cn/Lectures/002/Lecture-2.1.2/index.html
第二讲 Linux编程入门之 脚本编程

找不到成册的PERL语法说明CHM文件,只好上网搜索,看到这个,觉得讲得还通俗易懂,转贴记录一些要点。


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/perlbijixuexi1.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1128738329

2005年10月8日10:25星期六  [Info资料] 追踪此文的RSS
ekk在 2007年8月18日18:15星期六 评论:
EmotionEmotionEmotionEmotionEmotionEmotionEmotionEmotionEmotionEmotionEmotionEmotionEmotionEmotion

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告





统计信息
[Yippee]||[统计]||日志:2143
在线: 9||用户: 2635 [列表]
今日:875||到访:3654660
Rss:||评论:1668

最新日志

最新评论

友情链接

日历
342009 - 0734
   1234
567891011
12131415161718
19202122232425
262728293031 

最新引用
搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8