当先锋百科网

首页 1 2 3 4 5 6 7

标量数据


数字直接量

浮点数据指数表示:7.25e45, -1.2E-4;
长数字便于阅读的格式:12_345_678_910_111,支持非十进制0x1234_5678,0x12_34_56_78;

字符串直接量

单引号内的字符串:只转义单引号和反斜线。
双引号内的字符串:可以转义控制字符及非十进制写法表示的任何字符,例如:"\x{2668}","\007"八进制表示的ASCII值。
字符串操作符:连接操作符“.”、重复操作符"x",例如:"Hello " . "world",5x4.8<==>"5"x4 -> "5555"。
Perl会根据需要自动在数字和字符串之间进行类型转换,由操作符确定。前置零表示八进制仅对直接量有效,自动转换时会当做十进制来处理。不含数字的字符串自动转换时为零。

标量变量基本用法

定义:$number = 5;  $number += 5;  $str .= "Hello";  $str .= " world!";
打印:print "The answer is ", 6 * 7, ".\n";  print "Fred ate a $meat";
undef值:未赋值变量默认值是undef,可以用defined函数测试。$var = undef; defined($var)返回假。
获取用户输入 操作符:<STDIN>,$line = <STDIN>。可以使用chomp()操作符去除末尾换行符chomp($line = <STDIN>);


列表与数组


列表基本用法

直接量:(1, 2, 3),(“string”, 4.5), (1..100), ("name", "addr", "no"),其中..为范围操作符。

qw简写:qw(name addr no),内部不能使用\n或变量内插,忽略所有空白符。

其中()为定界符,可以使用任何标点符号,但左右字符需要匹配。 qw! name addr no !,如果内部字符和定界符冲突,可以使用反斜线转义。

赋值:($name, $addr, $no) = ("name", "addr", "no");

互换变量:($a, $b)= ($b, $a);

赋值时,如果数量不等,多余的变量被设置为undef,多余的值会被忽略。

数组基本用法

定义:@list = qw(name addr no);

数组元素访问:$fred[0] = "yabba"; Perl的数组可以自动扩大,数组$fred的最后元素索引为$#fred,其值为数组元素数量减一。

$fred[$#fred] = dabba,未赋值的部分为undef,数组也可以使用负数索引,-1为最后一个元素。$fred[$#fred] <==> $fred[-1]

空数组:@empty = (); 

范围操作符:@num = 1..1000; @all = (undef, @num, 1001..2000);

数组赋值:@copy = @all;

操作符

pop

取出数组最后一个元素并返回 @array = 5..9; $nine = pop(@array); $eight = pop @array; pop @array; pop @empty <==>undef;

push

添加元素到数组末尾 push @array, 0; push @array, 1..10;

shift

取出数组第一个元素 $m = shift(@array);  $n = shift @array; 

unshift

数组开头添加元素 unshift @array, @others;

splice

添加或移除数组中间的元素最多接受4个参数,后两个可选,第一个参数目标数组,第二个参数数组开始位置,第三个参数数组长度,第四个参数是要替换的列表@array = qw (1 2 5); @list = splice @array, 2, 0, qw( 3 4 );

reverse

读取列表元素,并按逆序返回 @array = reverse @array。

sort

升序排序

each

返回数组下一个元素的索引和值

数组内插

打印数组时会在数组各个元素之间自动添加分隔符,由$"指定,默认为空格:print @number;;

索引表达式会被当做普通表达式处理,$array[$y-1] <==>$array[1] <- $y = "2*4";;

如果要在标量变量后面接着写方括号,需要和数组引用区别 ${fred}[3]或$fred\[3];

列表遍历:foreach $rock (qw/ bedrock slate lava /){} ,控制变量就是列表元素本身,修改控制变量会同时修改列表元素;

$_ Perl的默认变量 foreach (1..10){....$_....}依次为1-10。

标量上下文与列表上下文

@number 标量上下文返回列表元素数量,列表上下文返回列表

强制指定标量上下文 scalar @rocks 数组元素数量。

chomp(@line = <STDIN>);读入所有行,不包含换行符。


哈希


基本用法

定义:%hash

访问哈希元素:$hash{$key};

哈希展开:@list = %hash 展开为键值对列表,顺序不确定。

打印:不支持整个哈希的内插,仅单个元素。$hash{$key}。

裸字:由 字母数字下划线组成非数字开头的字符串,称为裸字。裸字部分处理可以简写,无需加引号。

赋值:%hash = ('foo', 35, 'bar', 12.4, 2.5, 'hello',);为便于赋值,可以使用胖箭头=>,对Perl其等同于逗号,例如%hash = ('foo'=>35, 'bar' => 12.4, 2.5 => 'hello',);使用胖箭头时可以省略键的引号,但仅限于裸字。

花括号里的键名引用也可以省略引号,但如果不是裸字,就会作为表达式求值,$hash{ bar.foo } = 1<==> $hash{barfoo} = 1。

my %inversh_hash = reverse %hash; 将哈希展开为键值对并逆序,原来的键作为新哈希的值。

函数

keys values返回哈希的键列表和值列表。取得键和值得动作之间不修改哈希,键值的顺序是对应的。

each ($key, $value) = each %hash取下一组键值对。空的哈希键值均返回undef。

exists 判断哈希中是否存在键, exists $books{"dino"} dino是否存在于keys %books列表。

delete 删除键值对

%ENV哈希

Perl程序可访问的运行环境,例如PATH变量:$ENV{PATH};