1.数组名字(本例中:fred)和标量是属于完全不同的命名空间(namespace)。同一程序也可以同时包含叫做$fred 的标量 变量。如:能够使用标量变量(如$fred)的地方 使用数组元素(如$fred[2])。
2.最后一个元素的索引为$#rocks。(最后一个元素的索引值要比其实际包含的元素个数少一)。
负数索引值是-1(最后一个元素)。
$rocks[$#rocks] = ‘hard rock’;
$rocks[-1] = ‘hard rock’;
3. qw简写
qw(fred barney betty wilma dino ) == (“fred”, “barney”, “betty”, “wilma”, “dino”)
qw{
/usr/dict/words
/home/rootbeer/.ispell_english
}
qw!Yahoo\! Google excite lycos ! #其中一个元素为:字符串yahoo!
4.列表赋值
($fred, $barney, $dino) = (“flintstone”, “rubble”, undef);
($fred, $barney) = ($barney, $fred) #交换两个变量
在数组名前加@(后没有中括号)来引用整个数组 == all of the
@rocks = qw / bedrock slate lava /;
5. pop和push操作
pop 操作将数组的最后一个元素取出并返回
@array = 5..9;
$fred = pop(@array); #$fred 得到9,@array 现在为(5,6,7,8)
$barney = pop @array; #$barney gets 8, @array 现在为(5,6,7)
pop @array; #@array 现在为(5,6)(7 被丢弃了)
push,它可以将一个元素(或者一列元素)加在数组的末尾
push(@array,0); #@array 现在为(5,6,0)
push @array,8; #@array 现在为(5,6,0,8)
push @array,1..10; #@array 现在多了10 个元素
@others =qw/9 0 2 1 0 /;
push @array,@others; #@array 现在又多了5 个元素(共有19 个)
6. unshift 和 shift 对一个数组的开头进行操作(数组的左端有最小下标的元素)
@array = qw# dino fred barney #;
$m = shift (@array); #$m 得到“dino”, @array 现在为(“fred”, “barney”
unshift(@array,5); #@array 现在为(5)
unshift @array,4; #@array 现在为(4,5)
7.将数组插入字符串
插入的数组元素的第一个元素前面和最后一个元素后面不会插入空格,如果需要可以自己加入
@rocks = qw{ flintstone slate rubble };
$email =“fred\@bedrock.edu”; #正确
$email =‘fred@bedrock.edu’; #另一种方法
8. foreach控制结构
foreach $rock (qw/ bedrock slate lava /){
print “One rock is $rock.\n”; #打印出3 种rocks
}
默认变量: $_
foreach(1..10){ #使用默认的变量$_
print “I can count to $_!\n”;
}
$_ =“Yabba dabba doo\n”;
print; #打印出默认变量$_。
9. reverse(逆转)操作将输入的一串列表(可能是数组)按相反的顺序返回。
@barney = reverse (@fred); #得到10,9,8,7,6
11.分清标量contex和列表context
标量context 列表context
$fred = something; @fred = something; reverse something
$fred[3] = something; ($fred, $barney) = something; print something
123 + something; ($fred) = something;
something + 654 push @fred, something;
if(something){… } foreach $fred(something)
$fred[something] = something; sort something
12.清空数组的方法
@wilma = undef; #OOPS!得到一个元素的列表(undef),不同于下面的例子
@betty = (); #将数组置空的正确方法
13.强制转换为标量Context—— 用函数scalar
@rocks = qw(talc quartz jade obsidian);
print “I have ”, scalar @rocks, “rocks!\n”; #正确,输出其数字
14. <STDIN>在列表Context中
@lines = <STDIN>; #将输入读入列表context 中
换行符:在unix系统中为CTRL +D 在windows系统中为CTRL +Z
chomp (@lines = <STDIN>); #读入所有的行,不包括换行符
2.最后一个元素的索引为$#rocks。(最后一个元素的索引值要比其实际包含的元素个数少一)。
负数索引值是-1(最后一个元素)。
$rocks[$#rocks] = ‘hard rock’;
$rocks[-1] = ‘hard rock’;
3. qw简写
qw(fred barney betty wilma dino ) == (“fred”, “barney”, “betty”, “wilma”, “dino”)
qw{
/usr/dict/words
/home/rootbeer/.ispell_english
}
qw!Yahoo\! Google excite lycos ! #其中一个元素为:字符串yahoo!
4.列表赋值
($fred, $barney, $dino) = (“flintstone”, “rubble”, undef);
($fred, $barney) = ($barney, $fred) #交换两个变量
在数组名前加@(后没有中括号)来引用整个数组 == all of the
@rocks = qw / bedrock slate lava /;
5. pop和push操作
pop 操作将数组的最后一个元素取出并返回
@array = 5..9;
$fred = pop(@array); #$fred 得到9,@array 现在为(5,6,7,8)
$barney = pop @array; #$barney gets 8, @array 现在为(5,6,7)
pop @array; #@array 现在为(5,6)(7 被丢弃了)
push,它可以将一个元素(或者一列元素)加在数组的末尾
push(@array,0); #@array 现在为(5,6,0)
push @array,8; #@array 现在为(5,6,0,8)
push @array,1..10; #@array 现在多了10 个元素
@others =qw/9 0 2 1 0 /;
push @array,@others; #@array 现在又多了5 个元素(共有19 个)
6. unshift 和 shift 对一个数组的开头进行操作(数组的左端有最小下标的元素)
@array = qw# dino fred barney #;
$m = shift (@array); #$m 得到“dino”, @array 现在为(“fred”, “barney”
unshift(@array,5); #@array 现在为(5)
unshift @array,4; #@array 现在为(4,5)
7.将数组插入字符串
插入的数组元素的第一个元素前面和最后一个元素后面不会插入空格,如果需要可以自己加入
@rocks = qw{ flintstone slate rubble };
print “quartz @rocks limestone\n”; #输出为5 种rocks 由空格分开
在写email时:$email =“fred\@bedrock.edu”; #正确
$email =‘fred@bedrock.edu’; #另一种方法
8. foreach控制结构
foreach $rock (qw/ bedrock slate lava /){
print “One rock is $rock.\n”; #打印出3 种rocks
}
默认变量: $_
foreach(1..10){ #使用默认的变量$_
print “I can count to $_!\n”;
}
$_ =“Yabba dabba doo\n”;
print; #打印出默认变量$_。
9. reverse(逆转)操作将输入的一串列表(可能是数组)按相反的顺序返回。
@barney = reverse (@fred); #得到10,9,8,7,6
@wilma = reverse 6 ..10; #同上,没有使用额外的数组
10. sort 操作将输入的一串列表(可能是数组)根据内部的字符顺序进行排序。 @sorted = sort(@rocks);11.分清标量contex和列表context
标量context 列表context
$fred = something; @fred = something; reverse something
$fred[3] = something; ($fred, $barney) = something; print something
123 + something; ($fred) = something;
something + 654 push @fred, something;
if(something){… } foreach $fred(something)
$fred[something] = something; sort something
12.清空数组的方法
@wilma = undef; #OOPS!得到一个元素的列表(undef),不同于下面的例子
@betty = (); #将数组置空的正确方法
13.强制转换为标量Context—— 用函数scalar
@rocks = qw(talc quartz jade obsidian);
print “I have ”, scalar @rocks, “rocks!\n”; #正确,输出其数字
14. <STDIN>在列表Context中
@lines = <STDIN>; #将输入读入列表context 中
换行符:在unix系统中为CTRL +D 在windows系统中为CTRL +Z
chomp (@lines = <STDIN>); #读入所有的行,不包括换行符