Perl中的变量和数组
来源:互联网 发布:数据库的逻辑设计例题 编辑:程序博客网 时间:2024/06/11 13:06
perl变量主要分为三类:
如:
my %last_name = (
"www" => 1,
"eee" => 2,
);
@New_value=qw/4 5 6/; @hash{'D', 'E', 'F'}=@New_value;
@slice=@hash{'A','C','E'};
print "The new values from the hash slice are:@slice\n\n"; print "The hash now looks like this:\n"; foreach $key ( sort keys %hash){ printf "Key: %-10sValue: %-15s\n", $key,$hash{$key};
标量、数组和哈希(即关联数组)。perl根据第一个字符来区分变量名
$var 标量变量
@var 数组变量:
@加上数组名来表示一个数组;Perl中的数组下标是从“0”开始;
Perl中的数组元素不必是同一数据类型。@array = (1,2,3,'red');
使用[]引用数组中第几个元素。$array[0]是1,$array[3] 是 'red'。赋值:$array[4]= ‘four’;
为确定一个数组中的最后一个元素的位置,可以使用 $#array 语法。
@array = (1,2,3,4,5,6,7,8,9); $#array等于8 因为array[8]==9;
注意$#array+1就代表数组的长度。
子数组片段:
原来数组@array= (a,b,c,d,e,f,g,h,i);
进行下列操作后,@array[0,1,2] = ('z','z','z'); 以后变成了@array== (z,z,z,d,e,f,g,h,i);
splice
splice(@array,2,6); #目标数组, 起始位置,删除长度.
原来数组是12abcdef56789, 执行过后是1256789
splice(目标数组, 起始位置,删除长度,替换元素1,替换元素2(个数不一定要和删除元素相等)...);
@array=(1..9);
my@e=("a".."f");
splice(@array,2,2,@e,'A','B');
将会得到12abcdefAB56789。
本来是从$array[2]开始删除两个,3、4。现在提供了替换值,则从原来的3开始替换。将3替换为@e,将4替换为'A’,然后多出来的替换值'B'插入到5之前。
reverse函数的功能是颠倒数组,它可以把数组元素的顺序头尾颠倒。
@array=(1..9);
@array= reverse(@array); 现在 @array==(9,8,7,6,5,4,3,2,1);
sort函数:
1.基本语法
@sorted = sort {regular} @nosort;
2.一般用法
@sorted = sort(@nosort);
@sorted = reverse sort(@nosort);
$a<=>$b
$a
$b
$b
@array=(8,2,32,1,4,16);
print "sort{$a<=>$b}@array)\n";
print "sort{$a<=>$b}@array)\n";
%var 哈希
要访问hash 元素用 $hash{keyname}访问
Hash 赋值
可以使用如下的语法在hash 之间拷贝:
%new_hash = %old_hash;
将hash转变成其它形式更加常见。例如,我们可以将hash反转:
%inverse_hash = reverse %any_hash;
可以使用如下的语法在hash 之间拷贝:
%new_hash = %old_hash;
将hash转变成其它形式更加常见。例如,我们可以将hash反转:
%inverse_hash = reverse %any_hash;
.大箭头符号(=>)
用数组初始化%h为a=>1,b=>2 %h=('a',1,'b',2);
当给hash赋值时,有时并不明显哪些元素是keys,那些是values,因此发明了大箭头符号(=>)。在需要逗号的时候,都可以使用大箭头符号替换。如:
my %last_name = (
"www" => 1,
"eee" => 2,
);
哈希函数
某些有用的函数可以对整个hash 进行操作。
1.keys和values函数
keys函数会返回此hash的所有keys,values函数将返回所有的values。如果hash中没有元素,则此函数将返回空列表。
my %hash = ("a"=>1, "b"=>2, "c"=>3);
print my @k = keys %hash;
print my @v = values %hash;
某些有用的函数可以对整个hash 进行操作。
1.keys和values函数
keys函数会返回此hash的所有keys,values函数将返回所有的values。如果hash中没有元素,则此函数将返回空列表。
my %hash = ("a"=>1, "b"=>2, "c"=>3);
print my @k = keys %hash;
print my @v = values %hash;
each函数
如果想迭代hash的每一个元素,一种通常的方法是使用each函数,它将返回key/value对应的2个元素列表。
当对同一个hash函数进行一次迭代时,将返回下一个key/value对,直到所有的元素均被访问。如果没有更多的key/value对,则each函数将返回空表。
my %hash = ("a"=>1, "b"=>2, "c"=>3);
while(($key, $value) = each %hash)
{
print "$key => $value\n";
}
当然,each返回的key/vlaue对,顺序是混乱的(它其顺序和keys和values函数返回的顺序相同)。如果想将其按序排放,可以对它们排序(使用sort)。
my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);
foreach $key (sort keys %hash)
{
$value =$hash{$key};
print "$key => $value\n";
}
四、哈希的通常用法
1.exists函数
要查看hash中是否存在某个key,可以使用exists函数,如果hash中存在此key,则返回true,与是否有对应的value无关。
my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);
if(exists $hash{'a'})
{
print "true";
}
2.delete 函数
delete函数将某个给定的key(包括其对应的value)从hash中删除。如果不存在这个key,则什么也不做,不会有警告或者错误信息。
my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);
delete $hash{'a'};
foreach $key (sort keys %hash)
{
$value =$hash{$key};
print "$key => $value\n";
}
3.hash 元素的内插
你可以在双引号的字符串中使用单个hash元素,但不支持整个hash 的内插。
my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);
foreach $key (sort keys %hash)
{
print "$key => $hash{$key}\n";
}
如果想迭代hash的每一个元素,一种通常的方法是使用each函数,它将返回key/value对应的2个元素列表。
当对同一个hash函数进行一次迭代时,将返回下一个key/value对,直到所有的元素均被访问。如果没有更多的key/value对,则each函数将返回空表。
my %hash = ("a"=>1, "b"=>2, "c"=>3);
while(($key, $value) = each %hash)
{
}
当然,each返回的key/vlaue对,顺序是混乱的(它其顺序和keys和values函数返回的顺序相同)。如果想将其按序排放,可以对它们排序(使用sort)。
my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);
foreach $key (sort keys %hash)
{
}
四、哈希的通常用法
1.exists函数
要查看hash中是否存在某个key,可以使用exists函数,如果hash中存在此key,则返回true,与是否有对应的value无关。
my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);
if(exists $hash{'a'})
{
}
2.delete 函数
delete函数将某个给定的key(包括其对应的value)从hash中删除。如果不存在这个key,则什么也不做,不会有警告或者错误信息。
my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);
delete $hash{'a'};
foreach $key (sort keys %hash)
{
}
3.hash 元素的内插
你可以在双引号的字符串中使用单个hash元素,但不支持整个hash 的内插。
my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);
foreach $key (sort keys %hash)
{
}
部分源自http://linux.chinaunix.net/techdoc/net/2008/07/06/1015218.shtml
哈希分片(hash splice)
用法:@hash{'A','C','E'} 所谓散列分片,是一组散列键的列表
%hash= (
"A"=>"1",
"B" =>"2",
"C" =>"3"
);
}
对比数组片段
@Arr=('A', 'B', 'C', 'D' ); #定义都是( )
@Brr=@Arr[1,2,3]; #这里1 23 是下标,相当于上面的键。用[ ] ,上面哈希片段用{ }
print "@Brr\n\n";
($Crr[0], $Crr[1], $Crr[2])=@Arr;
print "@Crr\n";
显示
B C D
A B C
map
map EXPR, LIST;
map {BLOCK} LIST;
map函数能把数组中的每个元素值映射到表达式或者块中,并返回另一个数组。
@n = (2, 4, 6, 8);
@n = map {$_ * 2} @n;
print "@n\n";
@n = (2, 4, 6, 8);
@n = map $_ * 2, @n;
print "@n\n";
都一样,输出
4,8,12,16
0 0
- Perl中的变量和数组
- PERL中的数组和列表
- perl 列表和数组变量详解
- Perl中的变量(1)
- Perl中的词法变量
- Perl中的特殊变量
- perl中的隐藏变量
- Perl中的隐藏变量
- PERL中的私有变量
- Perl中的特殊变量
- perl中的变量内插
- Perl中的特殊变量
- Perl教学 第四篇 列表和数组变量
- VB中的变量和数组
- Linux中的变量和数组
- Perl中的数组操作
- Perl中的数组操作
- Perl 中的特殊变量 $&, $`,$' ,@_
- HDU 4360 As long as Binbin loves Sangsang spfa
- android 内核
- C语言中static的作用
- WWDC 2014 Session笔记 - iOS 通知中心扩展制作入门
- catch中的直接映射
- Perl中的变量和数组
- protobuf
- Linux笔记
- 通过一张图初步了解DNS
- 使用perl的expect对linux下使用fdi…
- leetcode-ZigZag Conversion
- Hadoop入门
- Windows下opencl环境配置
- 小白学c++之模板的使用