`
ahcming
  • 浏览: 19196 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Perl 学习小结

    博客分类:
  • perl
 
阅读更多

Perl 的意思

   Pracctical Extraction and Report Language    实用摘录与报表语言

   Pathologically Eclectic Rubbish Lister    病态折中式垃圾列表器

 

   是先有Perl这个词,后有展开诠释,两种解释都被Larry认可.

 

Perl 的原则

 

一:数据类型

   1.常量 

   常量用$变量名定义

$name = "ahcming";              # 定义一个字符串常量
$age = 24;                      # 定义一个数字常量

        1)数字.在Perl中,数字都是按双精度浮点数进行运算

255                                           # 数字默认是十进制
0377                                          # 八进制(octal)数字以0开头,十进制等于255
0xFF                                          # 十六进制(hexadecimal)数字以0x开头,十进制等于255
0b11111111                                    # 二进制(binary)数字以0b开头,十进制等于255

        数字运算符

+                # 2 + 3 = 5
-                # 2 - 3 = -1
*                # 2 * 3 = 6
/                # 2 / 3 = 0.66666666666
%                # 取模运算 2 % 3 = 2
**               # 乘幂运算 2**3 = 8
   

        2)字符串.

              字符串可以被单引号括起来,也可以被双引号括起来,两者的区别如下

'ahcming'                        # 7 个字符
"ahcming"                        # 同'ahcming'一样

'ahcming\n'                      # 9个字符,\,n 分别算两个字符
"ahcming\n"                      # 8个字符, \n算一个字符(换行符)

            也就是说双引号中的字符串会对那些特殊字符,变量自动进行替换,而单引号则会原封不动的进行输出.

 

            字符串操作符

a.字符串连接 "."
"hello" . "world"       # 等同于"helloworld"

b.字符串重复 "x"
"ahcming" x 3           # 等同于"ahcmingahcmingahcming"

c.比较操作符
eq              # 相等
ne              # 不等
lt              # 小于
gt              # 大于
le              # 小于等于
ge              # 大于等于
 

   2.数组

    一些数组常见用法

@names;                           # 定义一个数组
$names[0];                        # 引用第0个元素,数组下标从0开始
$names[2] = "intoms";             # 向第2个元素赋值,注意,现在@names有3个元素了
$names[-1];                       # 引用@names中最后一个元素,也就是intoms
$names[-100];                     # 试图引用倒数第100个元素,严重错误

 

   数组初始化及赋值

@num1 = (1,3,50);                         # 包含3个元素的数组
@num2 = (1..100);                         # 包含从1到100的100个元素的数组
@num3 = ($n..$m);                         # 如果$n<=$m, 则包含$n,$m之间的整数,如果 $n>$m,则数组为空

@str = qw(s1,s2,s3,s4);                   # qw 的好处是s1,不用用引号括起来
@path = qw{/usr/bin, /home/aaa, .};       # qw 的定界符可随意
 

   对数组进行操作的方法

1.pop                                     # 弹出数组尾元素
@array = 1..5;
$num = pop(@array);                       # $num = 5;@array现在是1,2,3,4

2.push                                    # 向数组尾压入元素,可以是多个
push(@array, 5);                          # @array现在是1,2,3,4,5
push @array, 6..10;                       # @array 现在是1,2,3,4,5,6,7,8,9,10
@ohers = qw/5 4 3 2 1/;
push(@array, @others);                    # 把others数组压入@array

3.shfit                                   # 弹出数组头部元素
@array = qw#dino fred barney#;
$name = shift(@array);

4.unshift                                 # 在数组头部压入一些元素,基本用法同push

5.reverse                                 # 转置数组
@num = 6..10;
@num2 = reverse(@num);                    # @num2是10,9,8,7,6,@num没有改变

6.sort                                    # 按照ASCII顺序对数组进行排序
 

   3.哈希

       哈希也可以称做关联数组,散列等等

    a.定义

%hash=();                # 声明一个空的hash
%hash={};               # 声明一个数组类型的空hash

%hash=("lincon",25,"ahcming",13);
%hash=("lincon"=>25, "ahcming"=>13);    # 以上两种写法相同,不过下面的更清楚点

   b.访问hash

%hash{key}            # 返回hash中key对应的value,如果hash中不存在key,则返回undef当%hash没有初始化时

可以用exists(%hash{key})来判断是否存在key// 有好的例子时补上 
$value = exists(%hash{key})?$hash{key}:defaultValue;

$hash{key} = value;     # 向hash中放入key==>value的键值对 

    c.遍历hash

for $key ( keys(%hash) ) {
     print $key . ", " . $hash{$key} . "\n";
}

while( ($key,$value) = each(%hash) ) {
    print "$key ==> $value\n";
}

   d.其它操作

i) 获得hash的长度
$hash_size = keys(%hash);     # %hash的长度放到$hash_size中
print scalar keys(%h) . "\n";         # 打印%h的长度。这里用了scalar来返回数组长度

ii)清空hash
undef(%hash);

   e.哈希的哈希

// 有好例子时补上
 

二:代码流程控制

   1.顺序

   2.选择

1.单if
if( boolean表达式 ) {
    # 一些操作
}

2.if-else
if( boolean表达式 ) {
    # 一些操作
} else {
    # 当条件为假的操作
}

3.if-elsif-else
if( boolean表达式 ) {
    # 一些操作
} elsif( boolean表达式 ) {
    # 一些操作
} else {
   # 其它情况的操作
}
 

   3.循环

1.for 循环
for( $x = 0; $x < 10; $x++ ) {
   #
}
联想C语言,你就知道其它形式的 for循环应该怎么写了,比如无限循环
for(;;) {
   # 
}

2.foreach
foreach (@array) {
   # 依次从读取数组中每个元素放在$_中
}

foreach $e (@array) {
   # 依次读取@array中每个元素放到$e中
}

3.while
while( boolean 表达式 ) {
   # 一些操作
}

 

  退出循环:

next;                         # 退出本次循环,相当C中的continue
last;                         # 退出所有循环,相当C中的break

 

三:定义子过程

常用格式

sub funName {

    #return xxx;
}

 

说明:

     1.funName 是进程名称.通过&funName()进行调用方法

&fun();                       # 无参调用 
&fun("ahcming", 18);          # 推荐这两种形式调用方法
fun("ahcming", 18);           # 只要不与perl系统函数名冲突,就可以去掉&
fun "ahcming", 18             # 只要加上括号看起来想函数,他就是函数,如果不影响语义就可以去掉括号
 

     2.funName 可省略,那就相当于匿名方法,用法如下

$value = sub {
   # 一些操作
   # 返回一个值,数组,对象什么的
}

 

  3.参数的传递.

       所有的参数,不论数目,类型,都放在一个数组($_)里面

       参数传递是引用传递(因为放在数组里面),所以在方法里面对参数进行修改会影响到外面的变量

       可以有方法里面用my 到接收到的参数再进行声明,形成局部变量

sub fun {
   my($value, @array, %map) = $_;
   # 对参数进行处理
   # 逻辑运算
   # 其它乱七八遭的
}
 

    4.返回值

      方法可以用return 显式的指定返回值,也可以隐式的指定,隐匿指定的规则是方法的最后一行的结果就是方法的返回值

sub fun {
   # xxxxxxx
   # xxxxxxxxx

   # waitarray 可用来判定调用方法的语意环境是列表还是标量
   return waitarray?@array:$value;
}
 

 

 

分享到:
评论

相关推荐

    Perl学习总结 - 副本.docx

    ### Perl学习总结知识点详解 #### 一、执行Perl程序的方法 Perl是一种强大的脚本语言,广泛应用于各种场景,包括系统管理、Web开发等。要执行一个Perl程序,首先要确保已经安装了Perl解释器。 - **文件后缀**:...

    perl语言个人学习总结教程

    总结来说,Perl是一种历史悠久且功能强大的编程语言,尤其擅长处理文本数据和文件操作。对于初学者而言,学习Perl可以加深对编程基本概念的理解,同时也为处理复杂的系统管理任务打下坚实的基础。当然,随着技术的...

    perl学习ppt全集

    总结来说,"perl学习ppt全集"是一份全面的学习资源,涵盖了从Perl基础到高级特性的各个层面,通过系统的教学帮助学习者掌握这一强大的编程工具。通过深入学习和实践,不仅可以提高个人编程能力,还能在数据分析、...

    PERL。PERL。ADD

    总结来说,"PERL"是一种强大的脚本语言,而"LPERL.ADD"可能是一个非标准的Perl扩展,具体含义需要根据实际情境和相关资源来确定。无论你是在学习Perl的基础还是探索高级特性,理解并熟练运用这些工具和模块都是提升...

    Perl 6 技术参考手册_PERL技术参考_Perl_

    Perl 6 是 Perl 语言的一个...总结,Perl 6 技术参考手册涵盖了语言的各个方面,无论你是初学者还是经验丰富的开发者,都能从中受益。通过学习和实践手册中的内容,你将能够熟练掌握Perl 6,开发出高效、可靠的程序。

    Perl 语言学习(自学绝佳资料)

    总结起来,这份Perl学习资料全面覆盖了语言基础、数据处理、流程控制、模块化编程、错误处理、正则表达式、文件I/O和面向对象等多个方面,是一份非常实用的自学资源。通过深入学习和实践,你将能够掌握Perl的强大...

    ActivePerl-5_ActivePerl5.28_ActivePerl_源码.zip

    总结,ActivePerl 5.28的源码不仅是一个宝贵的教育资源,也是Perl开发者提升技能和解决问题的宝贵资源。通过深入研究源码,我们可以更好地理解Perl的运作机制,从而编写出更高效、更稳定的Perl程序。

    周末速成课程-Perl

    ### 周末速成课程-Perl:快速入门与实用指南 #### 一、Perl简介 Perl(Practical Extraction and Report ...通过本文介绍的学习资源和实战示例,希望读者能够快速掌握 Perl 的基本用法,并进一步探索其更多高级特性。

    在Genesis中使用Perl的配置.doc

    ### 在Genesis中使用Perl的配置详解 #### 一、引言 在计算机编程领域,Perl是一种广泛使用...此外,为了更好地理解和使用Perl,建议进一步学习Perl的相关文档和技术资料,以便更深入地掌握Perl及其在Genesis中的应用。

    Perl 常见问题集

    - 《Programming Perl》、《Effective Perl Programming》等书籍是学习Perl的好资源。此外,《The Perl Journal》等杂志也值得关注。 - **Perl在线资源有哪些?** - CPAN(Comprehensive Perl Archive Network)...

    modern perl文档

    通过学习本书,读者不仅可以了解Perl的基本概念,还能掌握如何利用Perl 5的强大功能,编写出高质量、易于维护的代码。此外,《Modern Perl》还提供了关于Perl 5与Perl 6选择的建议,帮助读者根据自己的需求作出合适...

    Perl 5官方文档

    下面将详细介绍Perl 5的主要特点、核心概念以及如何利用"perldoc"工具进行学习。 Perl 5的特点: 1. **灵活性**:Perl 5的语法非常灵活,允许程序员以多种风格编写代码,这使得它适合各种不同的任务,但也可能导致...

    perl学习笔记参考

    ### Perl学习笔记参考 #### Perl简介 Perl是一种高级编程语言,全称为Practical Extraction and Report Language,由Larry Wall创建,并持续由他进行更新与维护。Perl最初被设计用于Unix环境下的编程任务,随着...

    perl脚本语言学习笔记心得

    这个文档中记录和总结了我学习perl脚本语言的一些经验和初学者需要注意的事情

    advanced perl

    总结起来,高级Perl技术培训涵盖了Perl语言的多个高级方面,包括最新的Perl5.10版本特性、测试方法(包括代码覆盖分析)、数据库访问、性能分析与基准测试、面向对象编程、以及使用Moose库和Catalyst框架的现代Perl...

    Programming Perl中文版

    本书以其详尽的内容和易于理解的示例,成为学习Perl的理想选择。 #### 二、Perl语言的基本概念 - **变量类型:** - 标量变量(如 `$variable`):用于存储单个值。 - 数组(如 `@array`):用于存储多个值的列表...

    高级Perl编程(黑豹书)+学习手札

    而《Perl_学习手札》可能是一本个人学习笔记或者实践总结,它可能包含作者在学习Perl过程中的心得、常见问题解决方案和实际项目经验。这样的书籍通常更具实战性,能够帮助读者在解决实际问题时找到灵感。 通过结合...

Global site tag (gtag.js) - Google Analytics