前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Perl 基础语法及数据结构

Perl 基础语法及数据结构

作者头像
我与梦想有个约会
发布2023-10-21 14:19:57
1480
发布2023-10-21 14:19:57
举报
文章被收录于专栏:jiajia_deng

我也算学了基本脚本语言的人,Au3、Pyhon、PHP、JavaScript、Shell 都用过,但这个家伙是有点让我膛目,语法简直简练到不能再简练了。一下午的时间看了看他的基础语法和示例,做一下记录。

代码语言:javascript
复制
#!perl

# 这是一行 Perl 的注释
print "Hello Perl";

=pod
这是 perl 的多行注释
这是 perl 的多行注释
这是 perl 的多行注释
=cut

# 基础变量
$var1 = 123456;     # 十进制
$var2 = 047;        # 八进制
$var3 = 0x1f;       # 十六进制

# 浮点型,不是非常精准
$var4 = 9.01e+21 + 0.01 - 9.01e+21;
print ("first value is ", $var4, "\n");

# 字符串中变量替换,仅支持在双引号中使用
$number = 11;
$text = "This text contains the number $number\n";
print $text;

# 单引号可以跨多行,但不能使用转移和变量替换
$text1 = "This is two
lines of text
";
print $text1;

# 字符串和数值互相转换
$string = "43";
$number = 100;
$result = $string + $number;    # $result = 71
print $result;

$result = "Hello" * 5;          # $result = 0
print ("Hello * 5 = ", $result, "\n");
$result = "12a34" + 1;          # $result = 13
print ("12a34 + 1 = ", $result, "\n");

# 字符串比较和逻辑操作符
if ($text eq $text1) {
    print "text = text1!\n";
} elsif ($var1 > $var2) {
    print "$var1 > $var2! \n";
} else {
    print "error!";
}

# 字符串自增
$stringvar = "abc";
$stringvar++;
print $stringvar;       # print abd
$stringvar = "abcZZZ";
$stringvar++;
print $stringvar;       # print abdAAA
print "\n";

# 字符串拼接
$newstring = "potato" . "head";
print $newstring, "\n";     # potatohead
$newstring = "t" x 5;
print $newstring, "\n";     # ttttt

# 逗号运算符
$val = 26;
$result = (++$val, $val + 5);   # $result = 32
print $result, "\n";

# 数组变量
@array = (1, 2, 3);
$scalar = $array[0];
$array[3] = 5;          # now @array is (1,2,3,5)
$scalar = $array[4];    # now $scalar = null
$array[6] = 17;         # now @array is (1,2,3,5,"","",17)

# 用数组给列表赋值
@list1 = (2, 3, 4);
@list2 = (1, @list1, 5);# @list = (1,2,3,4,5)

# 用数组给普通多个变量赋值
@array = (5, 7, 11);
($var1, $var2) = @array;    # $var1 = 5, $var2 = 7, 11 被忽略
print ("var1 = $var1, var2 = $var2\n");

@array = (5, 7);
($var1, $var2, $var3) = @array; # $var1 = 5, $var2 = 7, var3 = ""
print ("var1 = $var1, var2 = $var2, var3 = $var3\n");

# 字符串中的方括号和变量替换
print ("\$array[0] = $array[0]\n");

# 列表范围
@number = (1..10);
print "@number\n";
@day_of_month = ("01".."31");
print "@day_of_month\n";
$fred = "Fred";
print (("Hello, " . $fred . "!\n") x 2);

# 子数组
@array = (1, 2, 3, 4, 5);
@subarray = @array[0, 1];           # @subarray = (1, 2)
@subarray2 = @array[1..3];          # @subarray2 = (2, 3, 4)
@array[0, 1] = ("string", 46);      # @array = ("string", 46, 3, 4, 5)
@array[0..3] = (11, 22, 33, 44);    # @array = (11, 22, 33, 44, 5)
@array[0..2] = @array[3, 4];        # @array = (44, 5, "", 44, 5)
print "@array\n";
@array[1, 2] = @array[2, 1];        # 可用于交换元素
print "@array\n";

# 数组的库函数
@array = ("this", "is", "a", "test");
@array2 = sort(@array);
print "@array2\n";

@array2 = reverse(@array);
print "@array2\n";
@array2 = reverse sort (@array);
print "@array2\n";

@list = ("rabbit", "12345", "quertz");  # rabbi 1234 quert
chop (@list);
print "@list\n";

$string = join("", "My", "name", "is", "Jia Deng");
print "$string\n";  # MynameisJia Deng

@list = ("words", "and");
$string = join("::", @list, "colons");
print "$string\n";  # words::and::colons

@spt = split("::", $string);
print "@spt\n";     # words and colons

# 条件判断
if ( "aa" eq "aa" ) {
    print "==\n";
} else {
    print "!=\n";
}

# 循环
$idx = 1;
while ($idx <= 100) {
    print "$idx\t";
    $idx++;
}
print "\n";

until ($idx <= 1) {
    print "$idx\t";
    $idx--;
}
print "\n";

# 类 C 语言 break 和 continue
$i = 0;
while ($i < 100) {
    if ($i == 20) {
        # 到 20 停止循环
        last;
    }
    print "$i\t";
    $i++;
}
print "\n";

$i = 0;
while ($i < 30) {
    if ($i == 20) {
        # 将跳过 20 
        $i++;
        next;
    }
    print "$i\t";
    $i++;
}
print "\n\n";

# for
@list = (1, 2, 3, 4, 5);
foreach $temp (@list) {
    if ($temp == 2) {
        $temp = 20;
    }
    print "$temp\t";
}
print "\n";

# 单行条件
print ("\@list length = " . @list . "\n")   if (@list < 10);

# 关联数组
%fruit = ("apples" => 17, "bananas" => 9, "oranges" => 100);
foreach (keys(%fruit)) {
    print ("$_ = $fruit{$_}\t");
}
print "\n";

# 删除一个关联数组的元素
delete $fruit{apples};
foreach (keys(%fruit)) {
    print ("$_ = $fruit{$_}\t");
}
print "\n";

# each() 遍历关联数组
%records = ("Maris", 61, "Aaron", 755, "Young", 511);
while (($key, $value) = each(%records)) {
    print ("$key => $value\t");
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档