内容稍多,分两次学习,1-4一次,5-8一次
数组一个是存储标量值的无序列表变量。
数组变量以 @ 开头。访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取
#!/usr/bin/perl
@hits = (25, 30, 40); #创建数组
@names = ("google", "edualiyun", "taobao"); #创建数组
print "\$hits[0] = $hits[0]\n"; #\$ 斜杠 \起了反转义 的作用,让变量符号 $ 变成了 普通字符串
print "\$hits[1] = $hits[1]\n";
print "\$hits[2] = $hits[2]\n";
print "\$names[0] = $names[0]\n";
print "\$names[1] = $names[1]\n";
print "\$names[2] = $names[2]\n";

1、创建数组
数组变量以 @ 符号开始,元素放在括号内,也可以以 qw 开始定义数组。
@array = (1, 2, 'Hello');
@array = qw/这是 一个 数组/;
使用 qw// 运算符,就是等同于@array = (1, 2, 'Hello'); 而且还可以换行
@days = qw/1, 2, 'Hello'
/;
2、按索引来给数组赋值(或者说修改已有内容)
@array=qw/‘Monday’,‘’,‘’,‘’,‘’,‘’,‘Sunday’/
$array[0] = 'Monday';
$array[6] = 'Sunday';
3、访问数组元素
访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取
@sites = qw/google taobao edualiyun/;
print "$sites[0]\n";
print "$sites[1]\n";
print "$sites[2]\n";
print "$sites[-1]\n"; # 负数,反向读取
数组索引值从 0 开始,即 0 为第一个元素,1 为第二个元素,以此类推。
负数从反向开始读取,-1 为第一个元素, -2 为第二个元素

4、获取或者生成连续的数组元素,返回依然是数组
(1)生成连续的数组元素
#!/usr/bin/perl
@var_10 = (1..10);
@var_20 = (10..20);
@var_abc = (a..z);
print "@var_10\n"; # 输出 1 到 10
print "@var_20\n"; # 输出 10 到 20
print "@var_abc\n"; # 输出 a 到 z
(2)获取连续的数组元素,用法为切片的一种
print "@var_10[3..5]\n";
print "@var_10[6,7,8]\n";
print "@var_20[4..6]\n";
print "@var_abc[3..15]\n";

5、数组大小
数组大小由数组中的标量上下文决定;上下文,其实就是前后是对哪类变量的操作,是哪类变量的操作,变量自动变成相应的变量类型,而不用像python 一样 str() int() 等操作
如果上下文不是数组的操作,比如是数字操作,则是返回元素个数
#!/uer/bin/perl
@array = (1,2,3);
print "数组大小: ",0+@array,"\n"; #这里是与数字相加,@array自动转化为数字,数字就是元素个数
print "数组大小: ",$#array+1,"\n";
# $#array 表示数组最后有一个索引的数字
@array = (1,2,3);
$array[50] = 4;
$size = @array;
$max_index = $#array;
print "数组大小: $size\n";
print "最大索引: $max_index\n";

6、添加和删除数组元素

#!/usr/bin/perl
# 创建一个简单是数组
@sites = ("google","edualiyun","taobao");
print "1. \@sites = @sites\n";
# 在数组结尾添加一个元素
push(@sites, "baidu");
print "2. \@sites = @sites\n";
# 在数组开头添加一个元素
unshift(@sites, "weibo");
print "3. \@sites = @sites\n";
# 删除数组末尾的元素pop(@sites);
print "4. \@sites = @sites\n";
# 移除数组开头的元素
shift(@sites);
print "5. \@sites = @sites\n";

这里可能不好理解。请看附图,就能明白函数作用(很久以前的笔记,字不好,见谅)

7、将字符串转换为数组
#!/usr/bin/perl
# 定义字符串
$var_test = "edualiyun";
$var_string = "www-edualiyun-com";
$var_names = "google,taobao,edualiyun,weibo";
# 字符串转为数组
@test = split('', $var_test);
@string = split('-', $var_string);
@names = split(',', $var_names);
print "$test[3]\n"; # 输出 com
print "$string[2]\n"; # 输出 com
print "$names[3]\n"; # 输出 weibo

8、数组转换为字符串
#!/usr/bin/perl
# 定义字符串
$var_string = "www-edualiyun-com";
$var_names = "google,taobao,edualiyun,weibo";
# 字符串转为数组
@string = split('-', $var_string);
@names = split(',', $var_names);
print "@string\n";
print "@names\n";
print "#"x20;
print "\n";
# 数组转为字符串
$string1 = join( '-', @string );
$string2 = join( ',', @names );
print "$string1\n";
print "$string2\n";

网友评论