====perl编程思想:
常量,变量,数据结构,操作符,控制流,文件目录的操作,编写例程,执行os命令,正则表达式,定义与输出格式,模块
第一章:perl概述
(1)perl最擅长的地方是它的文本处理。
(2)专业化一点来说,Perl是一种字节编译语言,并且还是一个字节解释器。它不会象unix中的shell读程序一样,对程序进行逐行执行。相反,Perl会先通读一遍文件,将其编译为内部表达式,然后执行指令。
(3)虽然Perl是一种脚本语言,但是在所有的脚本语言中,它的执行速度可能是最快的。因为Perl本身是采用C语言开发,很多模块也是使用C语言开发的。换句话说,Perl执行某项指令可能是直接调用C语言开发的函数。。
(4)perl在编译的同时,也进行了一些代码的优化,例如,消除了不可能执行的代码,计算了常量表达式,加载了库定义。
第二章:perl安装
由于Perl是开放源码的软件,安装可以采用二进制包的安装方式,也可以采用编译源代码方式。
学会perl编程之前先学会使用perl帮助——perldoc。perldoc相当于unix下的man。例如perldoc -f index.
小骆驼书:
1.某些情况下,你可能在一台机器上书写程序,然后在另一台机器上运行。如果需要这样做,确定传输文件时选的是“文本”
(text)模式或“ASCII”模式而非“二进制”(binary)模式。选择这种方法的原因是,不同机器有不同的文本格式。如果不
这样做,可能得到不一致的结果。
2.标量是Perl 中最简单的数据类型,大多数的标量是数字(如255 或3.25e20)或者字符串.
(1)无论是整数还是浮点数,在perl内部都把它当成是双精度浮点数来处理,也就是说在perl内部没有整数值。
1e2=100,1E2=100,3982734927349=3_982_734_927_349
(2)同许多其它语言一样,Perl也允许使用非10为底的数字。八进制以0开头,十六进制以0x开头,二进制0b开头。在十
六进制中A到F(或者a 到f)分别表示10到15:
$oct=oct('0377'); $hex=hex("0xff");
--函数里面的单/双引号不能省略,即必须保证里面是字符串形式,否则得不到准确的十进制值255
(3) $val = oct(EXPR)
Interprets EXPR as an octal string and returns the corresponding value. (If EXPR happens to start off with "0x", interprets it as a hex string. If EXPR starts off with "0b", it is interpreted as a binary string.)
(4)数字操作符
模数运算符%:两个操作数首先变成它们对应的整数值,如10.5%3.2 转换为10%3后再计算。
2**3,表示2的3次方,等于8。
3.字符串
(1)字符串是一串字符(如hello)。字符串可能是字符的任意组合。最短的字符串不含任何字符。最长的字符串,可以填满
整个内存。这符合Perl 的哲学,只要有可能就不加任何内嵌的限制。
(2)Perl 中字符串可以包含任意字符,意味着利用字符串(string)你可以创建,遍历,操作二进制数据,而利用别的方法可能遇到极大的困难。例如,你可以把要更新的图片或编译好的程序放入一个Perl的字符串变量中,做完相应的修改后再写回去。
(3)单引号字符串中的\n不会被当作换行符来处理,其仅仅是两个字符\和n。只有在反斜线(\)后面接的是\或单引号’,其才会被当作特殊符号来处理。
(4)双引号字符串另一个性质是可进行变量内插,这是说当使用字符串时,如果字符串中含有变量名,将由变量的当前值替换
它。
(5)字符串可由.操作符连接(只是一个点.) 。
(6)一个特殊的操作符是字符串重复操作符(string repetition operator),由小写的字母x表示。这种操作能把操作符左边字符串重复操作符右边数字那么多次:“fred”x 3 # “fredfredfred”.
(7)数字和字符串之间的自动转换.
当在需要数字的地方使用了字符串(如,乘法),Perl 将自动把字符串转换为其等价的数字,就像输入的是十进制浮点数一
样。因此“12”* “3”将给出36。后面的非数字部分和前面的空格将被去掉,如“12fred34”* “3”将给出36 而不会用任何
提示。在极端情形,当一个不含任何数字的字符串将别转换为0。如,将“fred”当作数字来使用时。
(8)Perl 内嵌的警告(warnings)
#! /usr/bin/perl –w
use warnings;
use diagnostics;
4.运算符
(1)运算的优先级
     4**3**2《==》4**(3**2) --**是右结合的,所以右边的先进行计算。
(2)比较运算符
    数字的比较:>,<,<=,>=,!=,==
    字符串的比较:lt,gt,le,ge,ne,eq
5.Perl的True/False值判断
 (1)如果值为数字,则0为False,其余为True;
 (2)如果值为字符串,则空串(’’)为False,其余为True;
 (3)如果值既不是数字又不是字符串,则将其转化为数字或字符串再进行比较。
特殊地方:如果字符串为’0’,则其值判断也为False。
6.用户标准输入
<STDIN>作为标量来使用,它以换行符来作为结束。
chomp:去掉字符串末尾的换行符,它对变量起作用。如果字符串末尾有多个换行符,则其操作仅会只去掉一个。chomp操作有一个返回值,为其移除的字符个数。
7.undef
(1)变量在未被赋值前有一个特殊的值:undef。undef是一种特殊的标量,既不是数字也不是字符串。但是在需要数字的地方可以自动的转化为数字0,为字符串时则为空串.
(2)defined函数:在变量为undef是返回False,其余为True,即可以理解为判断变量是否已被定义。defined的否定为
!defined.