分类:
2010-08-13 14:49:12
Larry 开发了Perl
深入之前:Intermediate Perl
变量(variable)、循环(loop)、子程序(subroutine)、数组(array)
加入邮件列表,索取书籍手册:
技术评论:
网络版:(原版)
(中文版)
stonehenge manager: Tom Phoenix
perl 5.010 新的条件切换语句,given-when
额外练习:Learning Perl Student Workbook
Perl 实用摘录与报表语言 (Practical Extraction and Report Language)
病态折中式垃圾列表器 (Pathologically Eclectic Rubbish Lister)
Perl backronym
Perl这个词本身先被使用,后来才给出展开的词诠释
像shell或awk一样能够快速编程,又具有类似grep、cut、sort和sed的高级功能,而不必回头使用
像C这种类型的语言。
懒惰其实是一种美德,手推车是由懒得扛东西的人发明的;书写是由懒得记忆的人发明的;Perl的
创造者也是懒人,若不能发明一个新语言就懒得做事。
Perl基于低级语言(C、C++或汇编语言)和高级语言(如shell编程)中间的一种语言,它填补了低
级语言与高级语言之间的空隙。
《Perl语言编程》
骆驼长得也有点丑陋,但是它们努力工作,哪怕是在严酷的环境下也一样,骆驼能在种种不利的条
件下帮你把事情搞定,哪怕它们长相丑陋,而且气味更糟,有时候还会对你吐口水,Perl就有一点
像这样。
|
程序里bug的数量大致与源代码的长度成正比,而不是与程序的功能成正比。
开发团队邮箱:
90%用来处理文字,10用来处理其它事务。
Perl > CGI ; Perl > PHP
CPAN (Comprehensive Perl Archive Network) 综合典藏网
EDIT:
Unix: vim
Windows: UltraEdit;PFE
Mac OS X: BBEdit;TextMate
Perl程序最好不要用后缀后,某些Unix以外的系统上也用必须使用.plx的后缀名。
|
Perl最缺乏可移性的就是#!那行了,因为你必须确定在第台机器上perl是放在什么路径下的。不过
可以用env 命令自动定位perl的路径。
#!/usr/bin/env perl
#!/bin/env perl
不过用了env的参数,就不能用-w参数了。
Perl程序并不需要变量声明的部分。
大部分的perl语句都是表达式后面紧接着一个分号。
如何编译Perl?
运行程序时,Perl内部的编译器会先载入整个源程序,将之转换成内部使用的bytecode,这是一种
Perl在内部用来表示程序语法树的数据结构。然后交给Perl的bytecode引擎执行。
反斜线(backslash escape)转义
mod_perl 或CGI::Fast就是应用将程序代码编译后让它驻留在内存中。好让后续的调用跳过编译。
直接运行。
要是把编译后的bytecode存储起来,并没有什么好处,程序不会因此变得更易使用,维护,调试或
安装。
|
*********************************8
=over 8
=item atan2 Y,X
X
Returns the arctangent of Y/X in the range -PI to PI.
For the tangent operation, you may use the C
function, or use the familiar relation:
sub tan { sin($_[0]) / cos($_[0]) }
Note that atan2(0, 0) is not well-defined.
***********************************8
运行后,把小写的变成大写的了。
***********************************8
=over 8
=item atan2 Y,X
ATAN2 ARCTANGENT TAN TANGENT
Returns the arctangent of Y/X in the range -PI to PI.
For the tangent operation, you may use the MATH::TRIG::TAN
function, or use the familiar relation:
sub tan { sin($_[0]) / cos($_[0]) }
Note that atan2(0, 0) is not well-defined.
=back
***********************************8
Perl用标量来称呼单件事物。
标量可以存储在标量变量里,也可以从文件和设备读取
在Perl里,字符串就是单一的标量值。
Perl中所有数字都是按“双精度浮点数”。
Perl允许你在整数直接量里插入下划线,将若干位数分开,如:61_298_040_283_768
一般来说,你不能计算负数的负数次方。数学怪人们(math geeks)都知道,这样算出来的结果将会
是复数(complex number)。如果要使用复数的话,必须借助Match::Complex模块。
Perl中的字符串可以介于ASCII编码的32到126之间。不过因为字符串能够包含任何字符,所以可用
它来对二进制数据进行创建、扫描与操作。比如说,你可以将一个图形文件或编译过的可执行文件
读进Perl的字符串变量里,改变它的内容后,再写回去。
单引号内的字符串直接量(single-quoted string literal):
前后两个单引号并不属于字符串的一部分,它们只是用来让Perl识别字符串的开头与结尾。除了单
引号和反斜线字符外,单引号内所有字符都代表它们自己(包括换行字符,如果该字符串表示多行
的数据的话)要表示反斜线字符本身,需要在这个反斜线字符前再加一个反斜线字符;要表示单引
号本身时,同样在单引号前加一个反斜线字符。
注:
单引号内的\n并不代表换行字符,而是表示反斜线和n这两个字符。只有在后面是另一个反斜线或
单引号时。前面的反斜线才有特殊的意义。
双引号内的字符串直接量(double-quoted string literal):
在双引号里反斜线拥有更强大、更完整的能力,可用来表示控制字符,或是用八进制或十六进制写
法来表示任何字符。
|
字符串操作符:
字符串可以用.操作符
"hello" . "world" #等同于"helloworld"
比较特殊的字符串重复(string repetition)操作符。用小写字母x。
数字以字符串之间的自动转换:
通常Perl会根据需要,自动在数字和字符串之间进行类型转换,如果
操作符(像是+)需要的是数字,perl就会将操作视为数字;在操作符(像是.)需要字符串是,
perl便会将操作视为字符串。
对数字进行运算的操作符(比如乘法)如果遇到字符类型的操作数,perl会自动将字符串转换
成等效的十进制浮点数进行运算。因此"12" * "3" 结果会是36。"12fred34" * "3"也会得到36。
Perl内建警告信息:
perl -w my_program
#!/usr/bin/perl -w
到50页。