zoukankan      html  css  js  c++  java
  • Perl notes | Perl语言入门(第四版)笔记

    getops

    http://search.cpan.org/~nwclark/perl-5.8.5/lib/Getopt/Std.pm
    http://hi.baidu.com/longredhao/item/d2efffd308b884b632db9011
     
     
    Perl Exit Code:
    ...
    22 The device does not recognize the command.
    ...

    Perl语言入门(第四版) notes

    Perl原则

    Perl 没有长度的限制,只要你有足够的内存。Perl 的设计哲学,“没有不必要的限制”。String

    正如Perl 格言中所说: 做一件事不只一种方法(“There’s More Than One Way To Do It”).            Qw

    这在Perl 中是一条通用规则:如果去掉括号含义不变,那括号就是可选的。

    第一章概述

    Perl 擅长写那些需要在短时间内完成的程序。

    Perl 被设计为:90%处理文本,10%针对其它情况。

    CPAN Comprehensive PerlArchive Network         http://serach.cpan.org/    http://kobesearch.cpan.org

    http://perldoc.perl.org     http://www.perldoc.org  

    第二章标量数据

    21 数字

    211 所有数字内部的格式一致

    Perl都把它们当作双精度浮点数来处理. 这就是说在Perl 内部没有整数值。

    212 浮点数

    有或没有小数点的数字都是允许的(包括+或-号),也可带一个十进制的指数(符号为E)。-6.5e24

    213 整数

    Perl 允许用下划线来分隔: 61_298_040_283_768

    214 非十进制整数

    八进制以0 开头,十六进制以0x 开头,二进制0b 开头:0377, 0xff, 0b11111111. (这三个数在Perl 中都代表同一个数255)

    当一个非十进制的数字超过4 位时,读起来将很困难。由于这个理由,Perl 允许你使用下划线来区分:0x1377_0B77

    215 数字操作符

    加(+),减(-),乘(*),除(/)

    模数运算符(%): 两个操作数首先变成它们对应的整数值,如10.5%3.2 转换为10%3

    指数操作符由两个*号表示,如2**3,表示2 的3 次方,等于8.

    ◆注意,在模数运算中,如果有一个操作数为负数,那其结果和Perl 的具体实现相关。

    ◆通常不能进行一个负数的非整数次方的运算。对数学有一定了解的读者知道,这将产生一个复数(数学概念中的复数:如1+2i,译注)。

    如果想进行类似的预算,你需要Math::Complex 这个模块

    22 字符串

    最长的字符串,可以填满整个内存。这符合Perl 的哲学,只要有可能就不加任何内嵌的限制。

    有两种类型的字符串:单引号字符串和双引号字符串。

    221 单引号字符串

    除了单引号,或者反斜线(包括换行字符,如果字符串在下一行继续)之外的任何字符都表示它自身。

    单引号字符串中的\n 不会被当作换行符来处理,其仅仅是两个字符\和n。只有在反斜线(\)后面接的是\或单引号’,其才会被当作特殊符号来处理。

    222 双引号字符串

    如果想\和之后的字符成为转义字符(如\n 表示新行),应当使用双引号。

    2-1 双引号字符串中的转义符

    \L 接着的字符均小写直到\E

    双引号字符串另一个性质是可进行变量内插.

    233 字符串操作符

    字符串可由. 操作符连.

    一个特殊的操作符是字符串重复操作符(string repetition operator),由小写的字母x 表示。“fred”x 3 # “fredfredfred”        5 x 4 #实际上是“5”x 4, “5555”

    复制次数(右操作数)在使用之前会把它转换为小于等于它的整数(如,4.8 变为4)。重复次数小于1 将产生空串(长度为0)。

    224 数字和字符串之间的自动转换

    大多数情况下,Perl 将在需要的时候自动在数字和字符串之间转换。这完全依赖于标量值之间的的操作符。

    当在需要数字的地方使用了字符串: “12fred34”* “3”将给出36 而不会用任何提示.

    需要字符串的地方使用了数字: “Z”. 5 * 7 #同于“Z”. 35,或“Z35”

    23 Perl 内嵌的警告(warnings)

    使用–w 这个参数把警告打开:$ perl –w my_program    or         #! /usr/bin/perl –w          or        

    use warnings;

    use diagnostics;# 更详细的信息

    另一种优化方法是,在命令行中使用–M 这个参数: $ perl–Mdiagnostics ./my_program

    24 标量变量

    由$开头

    大小写是严格区分的

    243 二元赋值操作符

    $fred+=5;

    $str .= “”’

    25 print 输出

    251 字符串中标量变量的内插

    变量名分隔符:花括号({})。”${what}s.”

    252 操作符优先级和结合性

    表2-2 操作符的优先级和结合性(由高到低)

    253 比较运算符

    < <= = = >= !=

    有趣的字符串比较符:lt le eq ge gt ne。

    表2-3 数字和字符串的比较运算符

    比较关系      数字   字符串

    相等          = =       eq

    不等          !=         ne

    小于          <          Lt

    大于          >          gt

    小于或等于    <=        le

    大于或等于    >=        ge

    26 if 控制结构

    26.1  Boolean

    Perl 不同于其它的一些语言,它没有Boolean 类型。

    ● 如果值为数字, 0 是false;其余为真

    ● 如果值为字符串,则空串(‘’)为false;其余为真

    ● 如果值的类型既不是数字又不是字符串,则将其转换为数字或字符串后再利用上述规则。undef为false.

    27 用户输入

    <STDIN>

    28 chomp 操作

    如果字符串结尾有换行符,chomp可以去掉它。chomp ($text = <STDIN>); #读入,但不含换行符

    chomp 是一个函数。作为一个函数,它有一个返回值,为移除的字符的个数。

    这又是Perl 中的一条通用规则:除非移除它们时含义会变,否则括号是可以省略的。如果结尾有两个或两个以上的换行符,chomp 仅去掉一个。如果没有,那什么也不做,返回0。

    29 while 控制结构

    210 undef

    undef 既非数字也非字符串,它是另一种标量类型。undef 在需要数字的地方可以自动转化为0,如果是“字符串”,则表现为空串。如到了文件的结尾,则返回undef

    211 defined 函数

    要分辨其是undef 还是空串,可以使用defined 函数,它将在为undef 时返回false,其余返回true。

    第三章列表和数组

    列表是指数据,而数组是其变量名。

    31 访问数组元素

    $fred[0]

    如果下标超出了数组的范围,则其值为undef。

    32 特殊的数组索引

    最后一个元素的索引为$#rocks(最后一个元素的索引值要比其实际包含的元素个数少一)。

    负数索引值是-1(最后一个元素). 实际上,几乎没有人使用除了-1 之外的其它的负数索引值。

    33 列表

    数组是由括号括起来并且其元素由逗号分隔开的列表.

    范围操作符(range operator)..,它创建了从左值到右值之间所有值的列表。(1 ..5)

    (5 ..1) #空列表— ..中的左值应小于右值,否则为空

    列表中的元素并非必须是常数,也可以是在执行此语句时再计算值的表达式. ($m,17)

    331 qw 简写

    “quoted words”或者“quoted by whitespace”

    Perl 将它们当作单引号字符串处理,你不能像双引号那样在qw 中使用\n 和$fred. qw(fred barney betty wilma dino )

    whitespace(空格,像spaces,tabs,newlines 等字符串)将被忽略,剩下的组成了列表的元素。qw# fred barney betty wilma dino #

    34 列表赋值

    列表值也可以赋给变量:($fred, $barney, $dino) = (“flintstone”, “rubble”, undef);

    在数组名前加@(后没有中括号)来引用整个数组。读作“all of the(所有的)”.

    ◆Larry 声称选择美元符号($)和@符号的原因是,可以分别读做$calar(scalar)和@arry(array)。

    没有赋值的数组变量的值为( ),空表。和未初始化的标量变量为undef 类似,未被初始化的数组为空表。

    341 pop push 操作

    push 的第一个参数或者pop 的唯一参数必须是数组变量。

    @array = 5..9;

    $fred = pop(@array); #$fred 得到9,@array 现在为(5,6,7,8)

    如果数组为空,那pop 什么也不做(因为没有元素可以移出),并返回undef。

    push 的第一个参数或者pop 的唯一参数必须是数组变量。

    342 shift unshift 操作

    nshift 和shift 对一个数组的开头进行操作.

    35 将数组插入字符串

    插入的数组元素会自动由空格分开

    36 foreach 控制结构

    foreach 从列表的第一个元素一直循环执行到最后一个元素,一次迭代一个: foreach $rocks(@rocks){…}

    循环结束时,变量的值会回到循环开始前,如果没有值则为undef。这意味着如果有一个变量和控制变量有相同的名字:“$rock”,不用担心会混淆它们

    361 Perl 最常用的默认变量:$_

    如果在foreach 循环中省略了控制变量,那Perl 会使用其默认的变量:$_。

    foreach(1..10){ #使用默认的变量$_

    print “I can count to $_!\n”;

    }

    362 reverse 操作

    reverse(逆转)操作将输入的一串列表(可能是数组)按相反的顺序返回。

    注意reverse 返回逆转的列表,它不会改变其参数的值。@fred = reverse @fred;

    363 sort 操作

    sort 操作将输入的一串列表(可能是数组)根据内部的字符顺序进行排序。

    37 标量和列表上下文

    372 在列表Context 中使用Scalar-Producing 表达式

    如果一个表达式不是列表值,则标量值自动转换为一个元素的列表:@fred = 6*7;

    由于undef 是一个标量值,将undef 赋给数组不会清空数组。一个更好的方法是将空列表赋给它.

    373 强制转换为标量Context

    可以使用函数scalar。scalar @rocks

    38<STDIN>在列表Context

    <STDIN>在标量context 中返回输入的下一行。在列表context 中,它将返回这个输入文件的所有剩余部分。而每一行将作为一个独立的元素:

    @lines = <STDIN>; #将输入读入列表context 中

    chomp (@lines = <STDIN>); #读入所有的行,不包括换行符

    第四章子程序

    53 调用参数

    技术上讲,<>从数组@ARGV 中得到调用参数。

    <>操作查看@argv 来决定使用哪些文件。如果表为空,则使用标准输入流;否则,使用其找到的相应文件。

    @argv = qw# larry mor curly #; #强制使用这三个文件

    while(<>){…}

    55 使用printf 格式化输出

    %g要输出数字,通常使用

    %d 为十进制◆整数,根据需要而截尾:

    %s 是针对字符串的%x 是针对十六进制的,%o 是针对八进制的。

    printf 中的数据通常会接受一个宽度值。如果数据不能满足这个宽度,则会自动扩展开来:

    如果宽度值为负数,则为左对齐(对于所有的格式符):print “%-15s\n”, “flintstone”; #输出为flintstone○○○○

    %f 根据需要进行截尾,你可以设置需要几位小数点后面的数字:printf “%12f\n”, 6*7 + 2/3; #输出为: ○○○42.666667

    要输出一个百分号,可以使用%%,它不会使用后面列表中的元素. “\%”不能正确工作.

    56 句柄

    Perl 自身有六个文件句柄:STDIN,STDOUT,STDERR,DATA,ARGV,ARGVOUT

  • 相关阅读:
    2016年上半年中小学教师资格考试综合素质试题(中学)
    2015年上半年教师资格证考试《中学综合素质》真题--解析
    2014年下半年教师资格证考试《中学综合素质》真题--解析
    2014年上半年教师资格证考试《中学综合素质》真题--解析
    2013年下半年教师资格证考试《中学综合素质》真题--解析
    CSS3新特性
    到底什么是JS原型
    vue路由的两种方式(路由传参)
    vue项目实现路由按需加载(路由懒加载)的3种方式
    js中对象的合并
  • 原文地址:https://www.cnblogs.com/markjiao/p/2556252.html
Copyright © 2011-2022 走看看