perl基础语法

一 some关键字
@ARGV 全部的输入参数被push进该数组
$_ 默认变量
foreach(@ARGV){
print $_
}
将打印出全部的输入参数
sub child_function{
……
$a = $a+ 1
}
$funciton_return = child_function ## $function_return = $a
子程序默认会返回子程序中最后获得的一个变量,当有return会返回return语句web

state a #持久性私有变量,在子程序中使用这个关键字,每次调用子程序时,会使用上次保留下来的值
二 输入输出
@lines = \<\STDIN> #键盘标准输入
open FILEHANDLE, ‘< dino’ 打开文件句柄 ;< 只读 ;>只写会覆盖 ;>>只写不覆盖,写在文件末尾。
open LOG, ’ > :encoding(UTF-8)’, $file_name or die #特定编码
while(<\FILEHANDLE>){
print $_
}
foreach 和while是有区别的
foreach会直接将整个句柄的文件吃进内存,while会一行一行的吃进来
close FINEHANDLE
三 哈希
my %last_name(
‘hannan’ => ‘chenhn’
‘zishan’ => ‘xie’
)
函数 keys values each
my @k = keys %last_name
my @v = valus %hash
# key 的顺序不可预测,不过k[i] 会对应v[i]
四 正则
正则匹配修饰符
/m #多行匹配
/s #任意匹配字符 (.)能够匹配/n
/i #大小写无关
/x #加入空白符
/-?[0-9]+.?[0-9]*/0
/-? [0-9]+ .> [0-9]* /x 二者的匹配是同样的
锚位
\A 行开头 \z 行末尾
\b 单词边界 /\bdefine\b/ 只匹配define 不匹配tc_define
五 各类小细节数组

1.
while(<\FILEHANDLE>){
print $_ } 上述代码会将整个文件以\n换行符吃进来,没法进行多行匹配。 方法a : 改变行分割标志 undef $/ 这样作以后,while会将整个文件知道文件结尾做为行分割标志,吃进来。 方法b: m//m 使用m修饰