【Perl学习笔记】整理一下本身学习Perl知识点

Perl总体印象

perl语言很像PHP, Shell,C语言。下面只是整理Perl与其它语言不同的地方web

  • 一、键盘输入
# 键盘输入<STDIN>
$input_line = <STDIN>;
chomp($input_line);#去掉换行符
if($input_line eq "\n")
{
	print "input is blank line.\n";
}
else
{
	print "You Input Is: ${input_line}\n";
}
  • 二、变量未初始化默认为0或者空
#$epoch = 0;
print "\$epoch = ${epoch}.\n";
while($epoch < 1)
{
	$epoch += 1;
	$sum += $epoch;
}
print "\$sum = ${sum}";
print "\n";
  • 三、 开启警告和诊断,在代码最前面增长下面代码:
use warnings;
use diagnostics;
  • 四、判断文件末尾
# use defined
$madonna = undef;#undef表明到了文件末尾
if(defined $madonna)
{
	print "defined: $madonna\n";	
}
else
{
	print "no defined: $madonna\n";
}
  • 5 Perl pop and push; shift and unshift
    pop and push 加不加括号同样。push @copy_mylist,11,12 等价于push (@copy_mylist,11,12)
# use pop push 
@copy_mylist = (1..10);
push @copy_mylist,11,12;
while(defined ($temp_pop = pop @copy_mylist))
{
	print "pop copy_mylist: ", $temp_pop . "\n";
}
# use shift and unshift
@copy_mylist = (1..10);
unshift @copy_mylist,11,12;
while(defined ($temp_pop = shift @copy_mylist))
{
	print "shift copy_mylist: ", $temp_pop . "\n";
}
  • 6 关于@符号问题
    下面示例@gmail当作变量。@至关于arrary,$至关于scalar
print 'xiaogongwei10@gmail.com';# 打印:xiaogongwei10@gmail.com
print "xiaogongwei10@gmail.com";# 打印:xiaogongwei10.com
  • 7 Perl经常使用的变量$_, foreach
# use foreach and $_, reverse, sort
foreach(1..10)
{
	print "i can print:", $_, "\n"; 
}
@re_arrary = 6..9;
@re_arrary = reverse @re_arrary;
print @re_arrary;
print "\n";
@sort_arry = (1, 9, 8, 3..5);
@sort_arry = sort @sort_arry;
print @sort_arry;
print "\n";
  • 8 使用foreach打印和改变数组数值
# use foreach an change arrary
@qw_data = qw(qw_data xiao gong wei 121212);
$i = 0;
foreach $temp (@qw_data)
{
	print $temp, "\t";
	$temp = $temp . "_changed";#change @qw_data
}
print "\n";
foreach $temp (@qw_data)
{
	print $temp, "\t";
}
print "\n";
  • 9 函数参数及其返回值
# use subroutines paramater
sub xiaomax
{
	print "sub xiaomax\n";
	$len_input = scalar @_;
	print "\$len_input = ", $len_input, "\n";
	$i = 0;
	while($i < $len_input)
	{
		print "$i->", $_[$i], "\n";
		$i++;
	}
	$i + 100;
}
print "return :", &xiaomax(1,2,3,4);#调用函数

# use private variable
sub previter_var
{
	if(@_ != 2)
	{
		print "Waring you should input 2 paramters.\n";
	}
	my $max_data = shift @_;
	foreach(@_)
	{
		if($_ > $max_data)
		{
			$max_data = $_;
		}
	}
	$max_data;
}
print "previter_var return :", &previter_var(-1, 11212, 100);
print "previter_var return :", &previter_var;
print "\n";
# use return 
my @names_array = ("xiao", "gong", "wei");
print "sub which_name: ", &which_name("xiao", @names_array);
sub which_name
{
	my ($people, @all_people) = @_;
	my $return_str = "no find";
	foreach(@all_people)
	{
		if($people eq $_)
		{
			return $_;
		}
	}
	return -1;
} 
# use retuern @array 
sub return_array
{
	my @array_1 = $_[0]..$_[1];
	if($_[0] > $_[1])
	{
		return @array_1;
	}
	else
	{
		return reverse @array_1;
	}
} 
@reurn_value = &return_array(1, 5);
print "return_array return: ", @reurn_value;
print "\n";