ExtMail服务器社区's Archiver

wxd5981 发表于 2009-8-3 22:15

Perl手记

前言:
自己理解的一个术语:
Q: 什么是变量?
A: 变化的量,称之为变量.比如"$DIR",这个变量,其的值可以是3,4或者是/root.其值是可以变化的.$DIR就像一个箱子,其里面可以放苹果,也可以放橘子,当然也可以放电脑.o(∩_∩)o....里面放什么东西不重要,其$DIR是一个指向这个东西的指针.
$DIR="/root";
print "$DIR";

Q: 什么是数组?
A: 说通俗点,就是有很多数据放置在一起.还拿箱子来说明:变量的箱子只可以放一个东西.比如说,要么放苹果,要么放橘子.不能同时放2样东西.但是数组的箱子就可以既放苹果,又放橘子.放很多种东西.
@DIR=qw|w e r|;
print $DIR[0];

Q: 什么是散列?
A: 拿一个贴标签的例子来说:比如说,一个箱子中有很多种物品,有苹果,橘子,香蕉,梨.然后写4个标签,然后让抽奖,抽奖的人抽到苹果的标签,就给这个抽奖的人一个苹果.
%DIR=(config => "/root/config.conf",
      dir=> "/root",
      )
print $DIR{config};



#!/usr/bin/perl -w
第一句是告诉程序,此文件是一个perl script.这个和shell script类似.

use vars qw($DIR);   
声明一个$DIR变量,这里可以声明很多变量.例如:use vars qw($DIR $EXT $Mail),程序中的use strict的作用就是强制程序在使用变量前,先声明,否则报错.

BEGIN{} 的作用是向@INC数组中,添加模块路径.其和use libs 'path',的作用一样
@INC是一个数组,其里面包括了Perl程序在寻找libs库的所有路径

if (){}   if语句,当()里面的语句为真时,就执行{}里面的代码

$ENV{SCRIPT_FILENAME} 这个是得到cgi脚本的绝对路径.例如:/var/www/extsuite/cgi/index.cgi

=~ 这个是模式匹配操作符.
$ENV{SCRIPT_FILENAME} =~ m!(.*/)cgi!  这句话的意思是$ENV{SCRIPT_FILENAME}的值来和(.*/)cgi来做匹配.
在这里得提一下元字符.在这里的"."是一个元字符,是代表任何一个字符."*"是一个元字符,代表0个或者0个以上.合起来(.*/)就是任何字符(除了换行符).

since 发表于 2009-8-4 09:13

不错,支持!!!!

wxd5981 发表于 2009-9-23 09:58

1)  use vars qw($var)
use 和 require有异曲同工之处,都是加载模块.模块名字不用加pm
use是编译的时候引入的,require是在运行时引入的
use vars 是声明变量
2)  BEGIN {},向@INC数组中增加模块路径.
3)  unshift @INC,'/path';  增加perl寻找模块的路径
4)  print  "Content-type:text/html\n\n";在浏览器上使用,告知此页面是一个网页
5)  if (){}; if 条件语句  
    if (){} else {};
    if (){} elsf (){} else {};
6)  eval{} 捕获错误信息,将错误信息保存在$@变量中
7)  my   声明变量,作用域控制在一个block中
8)  package  声明包 ::是目录间隔符,类似linux中的/
9)  @ISA 当在@INC中找不到lib库的时候,就在@ISA路径中寻找
10) sub {} 方法定义
11) @_是参数数组
12) 构造函数主要是用来初始化一些东西,分为静态和动态两种.

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.