5. 列表直接量
- 小括号内用逗号隔开的一串数据(列表元素);
- 范围操作符 .. 可以自动创建它两侧标量值之间的所有取值;
- 范围操作符只能从小到大累加,从大到小空列表;
- 列表中的元素可以是表达式。
#!/usr/bin/perl
use strict;
use warnings;
print (1,2,3);
print "\n\n\n";
print (1,2,3,); # 逗号被忽略
print "\n\n\n";
print ("a","b","c");
print "\n\n\n";
print ("a",1,"b",2,"c",3);
print "\n\n\n";
print (); # 空列表
print "\n\n\n";
print (1..10);
print "\n\n\n";
print (10..5); # 范围操作符从大到小,得到空列表
print "\n\n\n";
print (1.3..10.6); # 小数点部分去掉后取范围
print "\n\n\n";
print ("a".."f"); # 字母取范围值
print "\n\n\n";
print (1,4..10,16);
print "\n\n\n";
my $m = 5;
my $n = 15;
print ($m,10); # 表达式当前值
print "\n\n\n";
print ($m,$n);
print "\n\n\n";
print ($m..$n);
print "\n\n\n";
6. qw简写
- 避免反复键入引号和逗号;
- qw表示:quoted word(用引号引用的词)或者quoted by whitespace(用空白引用的词),perl当成单引号内的字符串进行处理(qw内无法使用 \n转义字符或 $fred变量内插),空白符(如空格、制表符、换行符)被抛弃;
- qw列表中无法进行注释;
- 任意标点符号都可以作为定界符(delimiter)
#!/usr/bin/perl
use strict;
use warnings;
my @array = ("fred", "barney", "betty", "wilma", "dino");
print "@array\n-----\n";
my @array_qw = qw( fred barney betty wilma dino );
print "@array_qw\n\n\n";
my @array_qw1 = qw[ fred barney betty wilma dino ];
my @array_qw2 = qw# fred barney betty wilma dino #;
my @array_qw3 = qw! fred barney betty wilma dino !;
my @array_qw4 = qw[ fred barney betty wilma dino ];
my @array_qw5 = qw[ fred barney betty wilma dino ];
print "@array_qw1\n\n\n";
print "@array_qw2\n\n\n";
print "@array_qw3\n\n\n";
print "@array_qw4\n\n\n";
print "@array_qw5\n\n\n";
# 抛弃空白字符
my @array_qw6 =
qw(
fred
barney
betty
wilma
dino
);
print "@array_qw6 \n\n\n";
# qw列表中无法进行注释,#,\n,$等都为普通字符
my $fred = "fred";
my @array_qw7 =
qw(
$fred # name
\n
barney
betty
wilma
dino
);
print "@array_qw7 \n\n\n";
7. 列表的赋值
- 标量值可被赋值到标量变量,列表值也可以被赋值到标量变量。
- 列表是在赋值运算开始之前建立的,因而Perl 交换两个变量的值相当容易。
- 对列表赋值时多出来的值会被忽略掉,如果变量的个数多过给定的列表值个数,多出来的变量将会设成 undef(空列表)。
- 列表中需要 undef可以显式写明。
- 数组只能包含标量,不能包含其他数组,数组无法成为列表里的元素,数组名会被展开成元素列表。
- 赋值之前数组变量的值是空列表,即 ()。
# 列表值赋值到标量变量
my($fred, $barney, $dino) = ("flinstone", "rubble", undef);
print $fred . "\n";
print $barney . "\n";
print $dino . "\n";
# 交换两个变量的值
($fred, $barney) = ($barney, $fred);
print $fred . "\n";
print $barney . "\n";
my @betty;
$betty[0] = "age";
$betty[1] = "year";
($betty[0], $betty[1]) = ($betty[1], $betty[0]);
print $betty[0] . "\n";
print $betty[1] . "\n";
($fred, $barney) = qw{ slate granite flintstone rubble }; #忽略末尾2个元素
print $fred . "\n";
print $barney . "\n";
my ($wilma, $dino1) = qw{ flintstone }; # dino的值为undef
print $dino1 . "\n";
my @rock;
($rock[0], $rock[1], $rock[2], $rock[3]) = qw{ talc mica feldspar quartz };
print "@rock\n";
网友评论