笔记:perl 变量

变量   $a、@array、%hasharray(hash 数组)、指针

 赋值
        # 简单变量
        my $a = '22|str'; 

        # 数组
        my @arr = ("A","2","cc");  
        my $array[0]="a"; $array[1]="22"; $array[2]="c"; $array[3]="d";
        
        # hash 数组
        my %hash=("i1"=>"aaa","i2"=>"bbb","i3"=>"ccc");
        my %hash=("i1","aaa","i2","bbb","i3","ccc");    #必须成对
        my %hash; 
        $hash{'i1'}="aaa"; $hash{'i2'}="bbb"; $hash{'i3'}="ccc";

        疑问:value能是数组或hash
            $hash{'arr'}=\@arr;                          
            my %hhash; $hhash{'hash'} = \%hash;
            使用
                my @var = @{$hash{'arr'}};
                my %vhash = %{$hhash{'hash'}};

        # 指针
        $scalarRef=\$scalarVar;  print $$scalarRef;
        $arrayRef=\@arrayVar;  print "@$arrayRef";
        $hashRef=\%hashVar;  print $hashRef->{$key};
        $funcRef=\&funcName;  &$funcRef;
       
        -- 数据指针,每个元素类型不同
        $arrayRef=[[1,2,3,4],a,b,[x,y,z],c];  
            print "$arrayRef->[0][0]\t$arrayRef->[2]\t$arrayRef->[3][2]\n";
        
        -- hash指针(初始化区别 非指针是%hash,指针是$hash)
        $hashRef={a=>aa,b=>bb,c=>cc};  
            print "$hashRef->{a}\t$hashRef->{b}\t$hashRef->{c}\n";

    使用遍历
        # 数组
        my @arr = ("A","2","cc"); 
        my $len = $#array;                          # $len=2
        for(my $i=0; $i<=$len ; $i++) {
            print "$array[$i]\n";
        }

        my $len = scalar(@array);                   # $len = 3
        for(my $i=0; $i<$len ; $i++) {
            print "$array[$i]\n";
        }
        -- 函数
        push pop shift(在数组开头删除一个元素) unshift(在数组开头增加一个元素)
        http://cn.perlmaven.com/manipulating-perl-arrays

        # hash 数组
        foreach my $key (keys %hash) {
            print "$hash{$key}\n";
        }
        foreach $value (values %hash)
        while(($key,$value)=each %hash)
        
        # 指针如何遍历
            ???


    my,our,local 区别
    # 参考 http://blog.csdn.net/utopia_wang/article/details/1954193
    our 把名字限于一个范围,local 把(全局变量的)值限于一个范围以及 my 把名字和值都限于一个范围。
    our 变量,无论嵌套哪个{}层次内,操作的都是全局变量值
    一个全局变量上使用 local 操作符的时候,在每次执行 local 的时候都给该全局量一个临时值,全局变量的值并不会改变

# 判断参数是否已定义
 if ( defined $opt{'L'} ) {
    ....
}
请使用浏览器的分享功能分享到微信等