Perl基础知识

一. 基本语法

1.不要求缩进;

2.语句行末使用分号;

3.不在字符串内得空格会被Perl解释器忽略;

4.双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出;

5.Perl 标识符使用字母数字下划线组成,英文或下划线开头,区分大小写;

6.注释包括单行注释和多行注释;

单行注释:

# This is single line comment

多行注释:

=pod 注释

这是一个多行注释

这是一个多行注释

这是一个多行注释

这是一个多行注释

=cut

7.Here文档必须按照以下要求使用;

  • 1.必须后接分号,否则编译通不过。
  • 2.END可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  • 3.结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  • 4.开始标识可以不带引号号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
  • 5.当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。

$a = 10;

$var = <<"EOF";

这是一个 Here 文档实例,使用双引号。

可以在这输如字符串和变量。

例如:a = $a

EOF

print "$var\n";

 

二. 数据类型

1.Perl是弱类型语言,所以定义变量不需要显示声明类型。不过可以使用use strict语句强制要求声明类型。

2.Perl为每种类型变量定义一个命名空间,所以不同类型变量可以使用相同名字。

3.Perl支持3种基本数据类型:

3.1 标量

包括整型,浮点型,字符,字符串,段落...

$a = 123;

$c = 123.456;

$b = "abc";

注:

Perl双引号和单引号的区别:

1).双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出。

2).用单引号定义可以使用多行文本。

 

3.2 数组

成员内容可以是整型,浮点型,字符,字符串,段落等,且成员可以是不同类型。

@ages = (25, 30, 40);

@names = ("google", "runoob", "taobao");

print "\$ages[2] = $ages[2]\n";

print "\$names[0] = $names[0]\n";

使用方式:

用$name[XXX]方式引用数组成员。

 

匿名数组使用引用数组成员符号定义:

my $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]

3.3 哈希

被映射内容可以是整型,浮点型,字符,字符串,段落,数组...

%data = ('google', 45, 'runoob', 30, 'taobao', 40);

print "\$data{'google'} = $data{'google'}\n";

 

使用方式:

用$name{XXX}方式引用哈希成员。

 

匿名哈希使用哈希访问符号{}定义:

$href= { APR =>4, AUG =>8 };

 

三.函数

函数收到参数固定是一个数组@_,访问该数组成员方式是$_[0],$_[1]...

所以在向函数传递参数时,如果参数包含数组,要把数组作为最后一个参数;

传递多个数组时,他们会被自动融合成一个数组;

传递数组和哈希时,使用引用方式传递,否则融合成一个数组在函数内无法使用。

 

四.引用

Perl的引用类似于C语言的指针,不同的是perl还支持匿名的引用,即可以直接通过引用使用匿名变量,

而不用像C语言那样必须先创建变量再用指针指向变量。

 

1.使用引用操作匿名数组的方法 

数组正常添加成员方式:

@a = ('a', 'b', 'c');

push @a 'd'; # 添加在末尾

unshift @a 'd'; # 添加在开头

 

匿名数组添加成员方式:

$a = ['a', 'b', 'c'];

push($a 'd'); # 添加在末尾

unshift($a 'd'); # 添加在开头

print "@$a\n"; # 输出所有元素

 

2.使用引用操作匿名哈希的方法 

哈希正常添加成员方式:

%a = ('a' => "A", 'b' =>"B", 'c'=> "C");

$a{'d'} = "D"; #添加新成员

 

匿名哈希添加成员方式:

$a = {'a' => "A", 'b' =>"B", 'c'=> "C"};

$a ->{'d'} = "D"; #添加新成员

print "$a->{'d'}\n";  #输出新成员

 

五.面向对象

TBD

 

 

资源:

Perl教程:

http://www.runoob.com/perl/perl-tutorial.html

 

Perl function查询:

http://perldoc.perl.org/functions/

 

Perl eval用法:

https://blog.csdn.net/Aggressive_snail/article/details/53424999#eval%E8%BF%90%E8%A1%8C%E6%97%B6%E7%BC%96%E8%AF%91%E4%BB%A3%E7%A0%81

 

Use base用法:

转自:

https://blog.csdn.net/zll01/article/details/4520237

use base 是面向对象编程时,用来描述“基类”的,其实说白了,

use base somemodule;
就相当于以下两句的结合:

BEGIN{
    use somemodule ();
    push @ISA, qw(somemodule);
}
也可以同时 use base 两个或者两个以上的模块,例如:

use base qw(Foo Bar);
就相当于:

BEGIN {
    use Foo ();
    use Bar ();
    push @ISA, qw(Foo Bar);
}
至于 @ISA 是个什么样的数组,这完全不关 use base 的事,
只不过,@ISA 是一个比较特殊的数组,它的含义可以参见大骆驼中的描述。

顺便说一下,


use Foo ();

use Foo;
是不同的,
后者会自动调用 Foo 包里的 import 函数,而前者不会。

use base somemodule;

use somemodule;
多了并且只多了一句
push @ISA, qw(somemodule);

转载于:https://www.cnblogs.com/whutyuxinghai/p/8795529.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值