1.perl擅长文字处理
2.指定解释器
#!/usr/bin/perl
3.标量数据
数字
浮点直接量: 1.2,3.0,1.2E-7
整数直接量: 0,1,10,12_345_678
非十进制整数直接量:037,0xff,0b1111
字符串:
'helloworld'
"helloworld"
点"."操作符用于连接字符串
"hello" x 3 :重复字符串3遍
数字和字符串之间的自动转换:
+ 数值计算
. 字符串连接
开启警告功能(早期版本不能使用)
use warning; 或
perl -w script.pl;
use strict;#指示编译器,严格检查
标量变量
$variable
比较操作符: 数字 字符串
相等 == eq
不等 != ne
小于 < lt
大于 > gt
小于或等于 <= le
大于或等于 >= ge
4.if语句
if(){}
else{}
数字0,空字符串""为假,其他情况为真
5.输入
$line=<STDIN>
chomp($line);#去除字符串末尾的换行符
defined($line);#判断字符串是否为undef,无法判断空字符串
chomp($line = <STDIN>);#读取下一行,文件结尾返回undef
while(defined($line = <STDIN>)){
print "$line";
}
while(<STDIN>){
print "$_";
}
#两种方法效果一样
6.列表和数组(list,array)
列表是数据
数组是变量
列表的值不一定放在数组里;
每个数组变量一定包含一个列表
列表和数组的每个元素都是单独的标量变量,都是有序的,从0开始
访问数组元素:
$arr[0]="boy 1";
$arr[1]="boy 2";
$arr[2]="boy 3";
$#arr 表示数组个数
(1,2,3);
("boy1","boy2","boy3");
(1..100);#1-100整数构成的列表,.. 为范围操作符
qw简写(quoted word):加上引号的单词
qw(fred barney betty wilma dino);
列表赋值
($a,$b,$c)=("boy1","boy2","boy3");
($a,$b)=($b,$a);#交换变量的值
@:all的意思,引用整个数组
@copy=@src;#复制整个数组到另一个数组
$a=pop(@arr);#数组末尾出栈一个元素
pop(@arr);#丢弃末尾的一个元素
push(@arr,1);#末尾添加元素1
$a=shift(@array);#数组开头移出一个元素
unshift(@array,5);#数组开头加入一个元素
@remove = splice @arr, 1, 3;移除arr中1开头的3个元素
@arr=reserve(@arr);#翻转数组
@arr=sort(@arr);#数组排序
foreach my $var (@arr){}#遍历数组
$_ ;默认变量
$n=@people;#得到people的元素个数
7.子程序
定义全局的,可定义在任何位置
默认返回最后一次的运算结果
sub func1
{
$_[0];#第一个参数
$_[1];#第二个参数
@_;#子程序的私有变量,包含整个参数列表
}
8.文件
文件句柄
open CONF '<',$file;#只读
open CONF '>',$file;#覆盖写,不存在则创建
open CONF '>>',$file;#追加写
die func;#die用于处理致命错误
9.哈希
$some_hash{$some_key}=$some_value;
my %some_hash = (
"a" => "aaa",
"b" => "bbb",
"c" => "ccc",
);
%some_hash; #访问整个哈希
@ayy=%some_hash;#列表上下文
my %some_hash = %old_hash;#拷贝
print my @k = keys %some_hash;#获取所有的key
print my @v = values %some_hash;#获取所有的value
my $count = keys %some_hash;#键值对数量
#遍历哈希
while( my ($key,$value) = each %some_hash)
{print "$key => $value\n"; }
exist $some_hash{$key} 存在返回真
delete $some_hash{$key};#删除键值对