perl 基础学习(3)

来源:互联网 发布:运维和java哪个好 编辑:程序博客网 时间:2024/04/29 15:42
5.$_  @_  shift

A.@_ 是函数传参时放置参数的数组,可以从中取实参,
比如 my($para1,$para2...)=@_, 函数调用时填了几个参数,便可以从该数组中取到几个参数。
sub 定义函数
my $max_number = &max(1,2);
print "1 and 2 , the max number is $max_number\n";
sub max{
     my ($num1,$num2) = @_[0,1]; ## 取出参数列表中的元素。
     ........此处省略求max运算
}

B.$_ 是默认参数的意思,指的是在不指定的情况下,程序处理的上一个变量搜索,比如
open(IN,"<file.txt")
while(<IN>)
{
   print $_;
}
close(IN);
这个例子是打开一个文本文件,读取每一行,在没有指定参数的情况下,$_当时指向了从文件中读取的每一行。

C. shift 将数组的第一个元素 $array[0] 移走, 并将这个元素回传(return).
sub function {
        my $content = shift
        print $content;  

}
下文应该是这样
function ( "haha!" )
执行後会出现 haha!

@arr = (1,2,3,4);
my $str = shift @arr;
现在 $str是 1, @arr 是 (2,3,4)
当你将一些参数传入涵数(sub)时, 该涵数里就会有一个叫 @_ 的数组自动生成,
并将你输入的参数存起. shift ; 其实就是 shift @_ 的意思.

6 执行命令常见方法;
system e.g: my $ret = system("mkdir xx");
``(反引号)   e.g: my $ret = `pwd`

7 程序块

BEGIN  当 Perl 执行一个程序时,它会先编译源代码,如果编译成功,就开始执行源代码的第一个句子。有时你会想在源代码进行编译之前执行一些初始化的工作,例如在@INC 加入目录,以便在编译之前告诉 Perl 在哪里找模块文件。你可以用 BEGIN 子程序来做到这种效果,当Perl 编译完这个子程序后,就会立即执行它。

CHECK 在编译结束之后执行。其作用是执行类型检查。

INIT 在编译结束之后执行。其作用是在主运行阶段开始之前初始化变量和数据结构。

END 你可以用 END 子程序,在程序执行完毕时执行一些工作。


0 0
原创粉丝点击