perl学习笔记

1.在单引号里,\n不是换行,只是反斜线和字母n两个字符

2.2**3表示2的三次方

3.<STDIN>让perl程序读取从键盘输入的值

4.<STDIN>返回的字符串,一般都会在最后跟有一个换行符,用chomp能移除换行符,举例:

#!/usr/bin/perl
chomp($c=<STDIN>);
if($c eq "a"){
    print "match\n";
}
else{
    print "no data\n";
}

如果不加chomp,当你输入"a"的时候输出"no data"

5.注意下面不是乘号,而是字母x,输出为"hellohello"

#!/usr/bin/perl
$c="hello"x2;
 print "$c\n";

6.  ..范围操作符,从左边的数字计数到右边,每次加1,@是声明数组

c[0]=5,c[1]=6等等,pop可用来取出数组最一个元素,同时返回该元素值

下面输出$a=9,$b=8,@c为“5 6 7”

#!/usr/bin/perl
@c=5..9;
$a=pop(@c);
$b=pop(@c);
    print "$a $b\n @c\n";
7.perl的pop跟push操作数组的最右边,shift跟unshift操作数组的最左边
#!/usr/bin/perl -w

  1. use strict;
  2. print '@a @b @c @d 的值都为1 2 3',"\n";
  3. my @a = (1..3);
  4. pop(@a);
  5. print "\@a的值为@a,pop拿掉数组最右边的值\n";
  6. my @b = (1..3);
  7. push(@b,'4');
  8. print "\@b的值为@b,push添加一个值到数组的最右边。\n";
  9. my @c = (1..3);
  10. shift@c;
  11. print "\@c的值为@c,shift拿掉数组最左边的一个值。\n";
  12. my @d = (1..3);
  13. unshift(@d,0);
  14. print "\@d的值为@d,unshift添加一个值到数组的最左边。\n";
  15.  
  16.  
  17. [root@OTRS perl]# perl pop_push_shift_unshift.pl
  18. @a @b @c @d 的值都为1 2 3
  19. @a的值为1 2,pop拿掉数组最右边的值
  20. @b的值为1 2 3 4,push添加一个值到数组的最右边。
  21. @c的值为2 3,shift拿掉数组最左边的一个值。
  22. @d的值为0 1 2 3,unshift添加一个值到数组的最左边。

8.Foreach 从列表(数组)的第一个元素一直循环执行到最后一个元素,一次迭代一个。控制变量(本例中为$rock)每一次迭代从列表中取出一个新值。第一次为 “ bedrock” ,第三次为 “ lava” 。控制变量不是这些列表元素中的一个拷贝而是这些元素本身。也就是说,如果在循环中修改这个变量,那原始列表中的元素也会被修改,如下面代码段所显示。这条性质是有用的,但是,如果不清楚,可能对其结果感到吃惊。
当循环结束时$rock 的值为多少呢?其值同循环开始之前相同。foreach 循环中控制变量的值会被 Perl 自动保存和恢复。当循环进行时,是没有办法改变其值的。循环结束时,变量的值会回到循环开始前,如果没有值则为 undef。这意味着如果有一个变量和控制变量有相同的名字:“ $rock” ,不用担心会混淆它们。

#!/usr/bin/perl
foreach $rock(qw/ bedrock slate lava/){
print "One rock is $rock.\n";
}

$rock = "black rock";

@rocks=qw/bedrock slate lava/;
foreach$rock(@rocks){
$rock = "test $rock";
$rock .= "\n";
}
print "The rocks are:\n",@rocks;
print "The rock is: $rock\n";


 Output
One rock is bedrock.
One rock is slate.
One rock is lava.
The rocks are:
test bedrock
test slate
test lava
The rock is: black rock

9.reverse会读取数组并按相反的次序返回,会输出“109876”

@array=6..10;
@a2=reverse(@array);
$rock = "teset";

print @a2;

10.使用qw可以不用输入大量的引号,sort用来排序,输出apple first hit,$c=45

#!/usr/bin/perl
@a1=qw(first apple hit);
@a2=sort @a1;
foreach(@a2){
print "$_\n";
}
$c=42+@a1;
print "$c\n";

11.匹配不分大小写

#!/usr/bin/perl
while(<>){
if(/fred/i){  #Fred、FRED等都匹配
print "match";
}
}

12.Perl中的一个非常有用的函数是split - 把字符串进行分割并把分割后的结果放入数组中。这个函数使用规则表达式(RE),如果未特定则工作在$_变量上。

split函数可以这样使用:

$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);

其结果是:
@personal = ("Caine", "Michael", "Actor", "14, Leafy Drive");

如果我们已经把信息存放在$_变量中,那么可以这样:

@personal = split(/:/);

如果各个域被任何数量的冒号分隔,可以用RE代码进行分割:

$_ = "Capes:Geoff::Shot putter:::Big Avenue";
@personal = split(/:+/);

其结果是

@personal = ("Capes", "Geoff", "Shot putter", "Big Avenue");

但是下面的代码:

$_ = "Capes:Geoff::Shot putter:::Big Avenue";
@personal = split(/:/);

的结果是

@personal = ("Capes", "Geoff", "", "Shot putter", "", "", "Big Avenue");


13.sub可创建子程序,让我们可以重复利用已有的代码,可以通过“&”来调用子程序,最后一次的运算结果都会被自动当成子程序的返回值(不同于VBS),第2个例子最后的表达式为print语句。它的返回值通常是1,代表“输出成功”,但它并不是我们想要的值。

example 1:

sub test {

    $a + $b;

}

$a = 3;

$b = 4;

$tmp1 = &test; # tmp为7

example 2:

sub test {

    $a + $b;

    print "hello\n";

}

$a = 3;

$b = 4;

$tmp1 = &test; # tmp为1

14.my可以用来创建私有变量,state可以创建持久性私有变量(在子程序多次调用保留该变量的值)

sub max {

    my($m,$n);

    ($m,$n)=@_;

    if($m>$n) {$m} else {$n}

}

15.反向引用\1,反斜号后的数字和括号的组号匹配

$_ = "abba";

if (/(.)\1/){ #同'bb'匹配

    print "Matched!";

通过使用\g{1}排除二义性

use 5.010;

$_ = "aa11bb";

if (/(.)\g{1}11/){ #同'aa11'匹配

    print "Matched!";

16.默认模式匹配的对象是$_,=~能让perl拿右边的模式来匹配左边的字符串,而非匹配$_

my $t = "my rubble";

if($t=~/\brub/){ # \b匹配单词边界,还能匹配rubtest,但不能匹配arub

    print "match!";

}

17.s///用来替换

$_= "he is go with Barney tonight!";

s/Barney/Fred/;

print "$_";


18.即使有其他可以替换的部分,s///也只会进行一次替换,用/g进行全局替换

$_ = "home,sweet home!";

s/home/cave/g;

print "$_"; #打印"cave,sweet cave!",若不加/g,则打印"cave,sweet home!"


19.

$x="4:6:8:10";

my @values = split /:/,$x; #得到 4,6,8,10

my $z = join "-",@values; #得到 4-6-8-10

print "$z";

20.在编写perl程序的时候,我们有时需要截取一个字符串中的部分内容,这个时候通常会使用Perl substr函数实现这个功能。

1.             $str="testtest";  

2.             print substr($str,0,5);  

运行上面的程序,输出结果"testt",这个是我们想要的结果。再看看下面的程序:
  

1.             $str="测试文本";  

2.             print substr($str,0,1); 

这时候输出了一个"?",这显然不是我们想要的结果。因为在perl中,所有从外部输入的字符串(包括写在程序里的字符串)都会当成字节来处理,"printsubstr($str,0,1);"这句话只是把"测试文本"的第一个字节取出来,并且用print输出,然而单个字节是不能表示一个中文字符的,所以就输出了"?"。

如果想要上面的程序输出正确的结果,就需要使用decode函数把"测试文本"转换成perl内部字符串,让perl把"测试文本"当成字符串来处理,这样再用"substr($str,0,1);"截取的就不是一个字节,而是一个汉字。

◆下面看一下Perl substr函数的用法:

指令:substr

语法:substr($string,offset,length)
offset代表起始字符的位置,length代表引用的字符串长度,如果省略length则代表从起始值到字符串的最后一个字符长度。而offset如果是负值的话,就会从字符串右边开始指定字符。
示例:
 

1.             $s=substr("perl5",2,2);#这时$s="rl";  

2.             $s=substr("perl5",2);#这时$s="rl5";  

3.             $s=substr("perl5",-2,2);#这时$s="l5"; 

----------------------------------------

21.chdir 功能为改变当前工作目录(同cd),用法如下:

chdir("$Path/$day");

22.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于C++和LUA的服务端游戏引擎框架,也可以用于其它服务端系统。 C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值