一个变量就是用来保存一些东西的地方。这个地方有一个名字,这样当你需要使用这些东西
的时候就知道从哪里找到它。一个区分变量类型最直接的方法是
看变量里面保存了何种数据
。Perl变量分类如下:标量($)
, 一个独立的数值(数字或字串),$cents
数组(@)
, 一组有序列值表并且用编号做关键字,@large
散列(%)
, 一组无序标量值并且用字符串做关键字,%interest
子过程(&)
, 一段可以调用的Perl代码,&how
类型团(*)
, 所有叫stuck的东西,*struck
如果你使用了一个尚未赋值的变量,这个未初始化的变量会在需要的时候自动存在.
从某种意义上来说,使用单引号和双引号也是另外一种提供不同环境方法.
-
数组的脚标可以被看作是偏移量,也就是它前面的元素个数。
第一个元素前面没有任何元素,因此偏移量是0
。 散列
, 也称 关联数组- 是一种特殊的数组,你可以通过 {} 来获取单个的散列元素.
- 散列包含的关系是所有格的,象英文里面的 of 或者 ‘s.
例如 Adam 的妻子是 Eve,所以我们用下面的表达式:$wife{"Adam"} = "Eve";
- 散列与数组可以互相的以元素值得形式来使用。
Perl 的三种基本数据类型:
标量
标量数组
标量散列/标量联合数组
-
计算机科学家称之为
一个 package 建立了一个名字空间
。 文件句柄
文件句柄只是你给文件,设备,网络套接字或管道起的一个名字。这样可以帮助你分清你正在和那个文件或设备通讯,同时掩藏了如缓冲等复杂性。
使用 open 创建并关联一个文件。 open 函数需要至少两个参数:文件句柄和你希望与文件句柄关联的文件名。
open(SESAME, "filename")
# 从现存文件中读取open(SESAME, "<filename")
# 一样的东西,明确地做open(SESAME, ">filename")
# 创建文件并写入open(SESAME, ">>filename")
# 附加在现存文件后面open(SESAME, "| output-pipe-command ")
# 设置一个输出过滤器open(SESAME, "input-pipe-command | ")
# 设置一个输入过滤器注:打开一个已经打开的文件句柄隐含地关闭第一个文件,让它不能用该文件句柄访问,然后再打开另外一个文件。
使用读行操作符
<>
来读入一行,也称为尖角操作符
。什么是真值
- 除了 “” 和 “0”, 所有字符串为真
- 除了 0,所有数字为真
- 所有引用为真
- 所有未定义的值为假
一个代码段是由一对花括弧括在一起的一些语句。
if条件语句,当发现其中的一个条件是真的,就执行它的代码段,然后跳过所有其余的分支。
如果在一个标量环境中使用一个数组,就会返回数组的长度。
while(@ARGV) { process(shift @ARGV) }
for循环
在园括弧中有三个表达式:初始化循环变量,对循环变量进行条件判断,修改条件变量。- > 当一个 for 循环开始时,设置初始状态并且检查条件判断,如果条件判断为真,就执行循环体。
- > 执行完毕循环体中的语句,修改表达式执行。并且再次检查条件判断,如果为真,循环体再次执行。
- > 如果条件判断值一直为真,循环体和修改表达式将一直执行。
- > 注意只有中间的条件判断才求值,第一个和第三个表达式只是修改了变量的值,并将结果直接丢弃!
使用 next 和 last 跳出控制结构
- > 基本的用法可以类比于 C 语言中的
continue
和break
- > 当在循环中做上标记,并且指定了希望退出的循环, next 和 last 就能退出多重循环。
- > 基本的用法可以类比于 C 语言中的
正则表达式(regexes/regexps/Res)
- > 一个正则表达式就是
一种方法,这种方法能够描述一组字符串,但不用列出所有的字符串
。 - 正则表达式的三种用途:
确定一个字符串中是否匹配某个模式
,因为在一个布尔环境中它们返回真或假。如果你能将一个模式在字符串中定位,你就可以用别的东西来替换它
。模式不仅可以声明某地方是什么,同样也可以声明某地方不是什么
。例如: split 操作符使用了一个正则表达式来声明哪些地方不能匹配。
($good, $bad, $ugly) = split(/,/, "vi,emacs,teco");
- > 一个正则表达式就是
我们能教你我们怎么画,但是我们不能教你该画什么。 – 明智的画家的教学理念