[perl学习笔记]数组

2020-01-11  本文已影响0人  Silver_42ac

内容稍多,分两次学习,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";
image.png

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 为第二个元素


image.png

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";
image.png

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";
image.png

6、添加和删除数组元素

image.png
#!/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";
image.png

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

image.png

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
image.png

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";
image.png
上一篇 下一篇

猜你喜欢

热点阅读