Perl快速入门

清华大佬耗费三个月吐血整理的几百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";
}