Chinaunix首页 | 论坛 | 博客
  • 博客访问: 342105
  • 博文数量: 122
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1191
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 11:12
文章分类

全部博文(122)

文章存档

2010年(122)

我的朋友

分类:

2010-07-15 10:45:27

第二章 标题数据

       Perl用标量(scalar)来称呼单件事物。

数字

所有数字内部格式都相同

总是按“双精度浮点数”的要求来保存并进行运算。也就是说Perl内部并不存在整数值程序中用到的整型常量会被转换成等效的浮点数值。

浮点数直接量

直接量是直接写在程序源代码里的数据。如:

1.25

255.000

-6.5e24

-1.2E-23

整数直接量

如:

0

2001

-40

255

可以在整数直接量里插入下划线,将若干位数分开,61_298_040

非十进制的整数直接量

十六进制0x开头,二进制0b,八进制以0开头。

如:

0377

0xFF

0b11111111

可以用下划线分开,如:

       0x1377_0B77

数字操作符

主要是加(+)、减(-)、乘(*)、除(/)、取模(%)

字符串

字符串可以由各种字符任意组合而成。最短的字符串是不含任何字符的空字符串。最长的字符串是没有长度限制的,甚至填满内存。因为字符串能够包含任何字符,所以可用它来对二进制数据进行创建、扫描和操作。

单引号内的字符串直接量

除了单引号和反斜线字符外,单引号内所有字符都代表它们自己。要表示反斜线字符本身,需要在这个反斜线字符前面再加一个反斜线字符;要表示单引号本身时,同样在单引号前加一个反斜线字符。

‘fred’      #总共4个字符:fred

‘barney’  #总共6个字符

‘hello\n’  #后面接着反斜线和n

‘hello

there’       #hello、换行符、there(总共11个字符)

单引号内的\n并不代表换行字符,而是表示反斜线和n这两个字符。只有在后面是另一个反斜线或单引号时,前面的反斜线才有特殊的意义。

双引号内的字符串直接量

反斜线字符拥有更强大、更完整的能力,可用来表示控制字符,或是用八进制或十六进制写法来表示任何字符。

双引号内字符串的另一种特性称为变量内插,这是指在使用字符串时,将字符串内的变量名称替换成该变量当前的值。

字符串操作符

字符串可以用.操作符拼接起来。

“hello”.“world”  #等同于”helloworld”

字符串重复操作符x,会将其左边的操作数与它本身重复连接,重复次数则由右边的操作数指定。

“fred” x 3              #”fredfredfred”

复制次数在使用前会取整。复制次数小于1时,会生成长度为零的空字符串。

数字与字符串之间的自动转换

如何转换?取决于操作符需要什么类型的操作数。如果操作符(像是+)需要的是数字,Perl就会将操作数视为数字;在操作符(像是.)需要字符串时,Perl便会将操作数视为字符串。因此,你不必担心数字和字符串间的差异,只管合理使用操作符,Perl会自动完成剩下的工作。

12*3”的结果会是36

字符串中非数字的部分会被略过。“12fred34” * “3” 也会得到36

Perl内建警告信息

在发现程序有些不对劲的时候,你可以让Perl发出警告。要启用警告功能,请在命令行运行程序时使用-w选项:

perl –w my_program

或者,如果想要每次运行都启用警告功能,可使用#!行来指明:
       #!/usr/bin/perl –w

如果看不懂警告信息,可以利用diagnostics这个编译命令看详细的问题描述。

标量变量

标量变量存储的是标量值。标量变量的名称是以美元符号($)开头,后面接着所谓的Perl标识符:一个字母或下划线为首,后面可以跟上多个字母、数字或下划线。你也可以把它想成由一个以上的字母、数字或下划线构成,但是开头不能是数字。另外,大写和小写的字母是被区分。

标量的赋值

=号赋值。

双目赋值操作符

+=.=**=(乘幂操作符)

print输出结果

可以用print输出一系列用逗号隔开的值:

print “The answer is “,6*7,”.\n”;

字符串中的标量变量内插

字符串内的所有标量变量名,都会被替换为该变量当前的值。

$meal=”steak”;

$barney=”fred ate a $meal”;       #相当于”fred ate a steak”;

字符串’0’是唯一被当成假的非空字符串。

Perl里面我们可以用一对花括号将变量名围起来,以避免歧义。

$name=’liuyaoxing’;

print “${name}s”;

操作符的优先级与结合性

结合性           操作符

                  括号;给定参数的列表操作符

                  ->

                     ++ --(自增;自减)

                  **

           \ ! ~ + -

           =~ !~

           * / % x

           + - .(双目操作符)

           << >>

              具名的单目操作符(-X 文件测试:rand

              < <= > >= lt le gt ge

              == != <=> eq ne cmp

           &

           | ^

           &&

           ||

              .. …

           ?:

           = += -= .=

           ` =>

           not

           and

           or xor

比较操作符

数值与字符串的比较操作符

比较              数值              字符串

相等              ==                 eq

不等              !=                  ne

小于              <                   lt

大于              >                   gt

小于或等于    <=                 le

大于或等于    >=                 ge

if控制结构

学会如何对两个值进行比较后,你可能会需要根据比较的结果决定下一步的流程。

布尔值

判断规则

如果值为数字,0为假;所有其他数字都为真。

如果值为字符串,空字符串(‘’)为假;所有其他字符串都为真。

如果不是数字也不是字符串,就先转换成数字或字符串再行判断。

字符串’0’跟数字0是同一个标量值,所以字符串’0’是唯一被当成假的非空字符串。

获取用户输入

使用“行输入”操作符返回的字符串,一般在最后都会跟有一个换行符。

Chomp操作符

Chomp操作符的用途过于单一:它只能用在一个变量上,而且该变量的内容必须为字符串。如果 此字符串的结尾是换行符,chomp能将它移除。如果字符串后面有两个以上的换行符,chomp也仅仅删除一个。如果结尾处没有换行符,它什么也不做,直接返回零。

While控制结构

C,C++里的一样。

       undef

       标量变量的初值始为undef

       defined函数用来判断某个字符串是undef而不是空字符串。如果是undef,该函数返回假,否则返回真。

阅读(1181) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~