注释
=pod
1.xxx
2.ddd
3.这是多行注释
=cut
# this is comment 单行注释
数据类型
# 标量
$a = "abcdefg";
$b = 123456;
# 数组
@array1 = (1, 2, 3, 4, 5);
# hash
%h = (
"x" => 1,
"y" => 2,
"z" = 3,
);
判断语句
if … elsif … else
my @array = (1..10);
foreach (@array){
if($_ == 1) {
print "This is one($_)\n";
}elsif($_ == 2) {
print "This is two($_)\n";
}elsif($_ == 3) {
next; # 跳到下一次 相当于其他语言中的continue
}else {
print "$_\n";
}
if($_ > 5){
last; # 跳出循环
}
}
unless … else …
my $i = 1;
unless($i > 5){
say "$i is not larger than 5";
}else {
say "$i is larger than 5";
}
if和unless的区别:* if(condition) == unless(! condition) *
Perl 判断值为true或false的规则
- Perl 不是用的这些规则,但可以利用它们方便记忆,其结果是一致的。
- 如果值为数字,0 是 false;其余为真。
- 如果值为字符串,则空串(”)为 false;其余为真。
- 如果值的类型既不是数字又不是字符串,则将其转换为数字或字符串后再利用上述规则。
- undef为 false。所有的引用都是 true。
* 这些规则中有一个特殊的地方。 由于字符串 ‘0’ 和数字 0 有相同的标量值,Perl 将它们相同看待。也就是说字符串 ‘0’ 是唯一一个非空但值为0的串。 *
循环语句
while
$i = 1;
while($i < 10){
print $i."\n";
$i += 1;
}
while … continue…
#!/usr/bin/env perl
my $i = 1;
while($i < 5) {
print "$i \n";
}continue {
$i++;
}
until
my $i = 1;
until($i >=5 ) {
print "$i \n";
$i++;
}
while 和 until的区别: while(condition) == until(! condition)
do … while …
my @a = (1 .. 10);
my $i;
do {
$i = shift @a;
say $i;
} while ($i < 5);
Perl 中没有 do 。。。while。。。循环语句, 实际上这是do语句与while语句一起工作。
for
for<