清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
#!/usr/bin/env perl # # 基本语法 # ;用于语句结束符 # #用于注释 # ""用于表示字符串,变量可以在""中被替换,如: $var = "world."; print "Hello $var\n"; #输出为:Hello world. # ''用于表示字符串,''内的所有内容都被当作纯文本,如: print 'Hello $var\n'; #输出为:Hello $var\n # 关于style print("Hello, world\n"); #OK print "Hello, world\n"; #OK # 变量类型 # Perl主要有三种变量类型: 标量、数组、哈希表 # Perl不需要预先声明变量,直接将变量值附给变量即可 # 标量表示单一值,以$后接变量名来表示一个标量 # 标量可以存储字符串、整数、浮点数 $var_scalar = 1; print $var_scalar; # 或者 print "The scalar's value is $var_scalar\n"; # 或者 print "The scalar's value is", $var_scalar, "\n"; # 用@后接变量名来表示一个数组 # 数组保存列表,列表是标量集合 @var_array = (1, 2, 3, "a", "b", "c"); # 或者 @var_array = qw(1 2 3 a b c); # 或者 @var_array = qw/1 2 3 a b c/; print "The 2nd elm of var_array is $var_array[1]\n"; # 数组切片 # 1. 输出数组中某两个值 print @var_array[0, 2], "\n"; # 2. 用连接符..输出数组中一个区间中的所有值 print @var_array[0..3], "\n"; # 用%后接变量名表示一个哈希,即"键值对"的集合 # => 符号左边是键,右边是值 %var_hashes = (a => "Apple", b => "Blizzard"); print "One elm of var_hashes is $var_hashes{\"b\"}\n"; # 用keys()或values()两个函数分别获取哈希表的所有键或所有值 my @allKeys = keys %var_hashes; my @allValues = values %var_hashes; # 常用内建变量 # $_ 默认变量 # @_ 默认数组变量,保存传递给子程序的所有参数 # $! 当前错误信息 # $0 当前脚本的文件名 # $$ 当前脚本的进程号 # @ARGV 命令行参数列表 # 内建操作符和操作函数 # +, -, *, / # ==, !=, <, >, <=, >= # eq equality # ne inequality # lt less than # gt greater than # le less than or equal # ge greater than or equal # &&, and # ||, or # !, not # = 附值 # . 串连两个字符串 # x 重复字符串 # .. 以..符号相端点,创建一串值 # +=, -=, .= print "Baidu"x3; print "\n"; # 变量作用域 # 主要有my和local两种作用域 # my,声明的层次&同一层次 # local, 声明的层次&以内层次 my $var_my_scope; local $var_local_scope; # 不加my或local,默认为全局作用域 # !建议不要用过多全局的变量 # !建议在脚本开头加上如下两句: use strict; use warnings; # 这样,解释器会强制你使用my或local来表示变量的作用域, # 这样做可以帮你检查到一些普通的编程错误 # 条件判断和循环控制 # if, while, for, foreach,until, unless # if my $isOK = 1; if ($isOK) { # ()和{}在这里都是必须使用的 print "OK\n"; } else { print "Ooops...\n"; } # 或者这样写: print "OK\n" if $isOK; # while my $count = 10; while($count > 0) { print "while ... $count\n"; $count -= 1; } # 因为foreach的存在,for在Perl中用得很少,它的写法和C一样 my @array = (1, 2, 3, "a"); foreach my $elm (@array) { print $elm, "\n"; } # 文件操作,即IO # open()函数打开一个文件 # 读文件$file,将文件的标识符附给$fileHandle my $file2open="./1.txt"; my $fileHandle; open($fileHandle, "<$file2open"); # <>符号用于读取$fileHandle指向的内容 # 利用钻石操作符号<>,你可以: # 1. 将$fileHandle指向的内容附给一个标量,这样只读一行就over # my $line = <$fileHandle>; # 2. 将$fileHandle指向的内容附给一个数组,将每一行作为一个element # my @lines = <$fileHandle>; # 3. 常用于while或者foreach foreach (<$fileHandle>) { print $_; } # 写文件$file open($fileHandle, ">$file2open"); print $fileHandle "abc"; # 追加写入 open($fileHandle, ">>$file2open"); print $fileHandle "def"; # 关闭文件 close($fileHandle); # 子程序 # @_ 符号包含所有传递给子程序的参数 sub subFunc1 { print "\nsubroutine 1\n"; } sub subFunc2 { print "subroutine 2\n"; return "I like Perl.\n"; } sub subFunc3 { my ($param1, $param2) = @_; print $param1, $param2, "\n"; } # calling subroutine subFunc1(); # 或者 &subFunc1; print subFunc2(); subFunc3("Ooops...", 123); # 正则表达式 # 查找:在$re_test中查找oo # =~是绑定操作符 my $re_test = "Google"; if($re_test =~ /oo/) { print "Bingo!\n"; } # 替换;在$re_test中用xx替换oo if($re_test =~ s/oo/xx/){ print $re_test, "\n"; } # 匹配修饰符 # i, g my $re_test2 = "FacebOok"; if($re_test2 =~ /oo/i){ print "Bingo!\n"; }