赋值
# 简单变量
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 @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
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'} ) {
....
}