perl初学菜鸟

perl初学菜鸟

图片[1]-perl初学菜鸟-学吧号

fedora16默认的gnome3桌面,右键无效。

Perl入门教程

图片[2]-perl初学菜鸟-学吧号

2楼真是的,人家还没入门,你直接整个文件操作干嘛?什么是Perl?Perl 是一种最初开发用于文本操作的编程语言。现在它能应用于广泛的任务,包括系统管理、 web 开发、 网络编程、 GUI 开发和更多的普通用途。

这个语言以实用性为目标(易用、高效、完整)宁愿失去美丽(小巧、优雅、迷你)。

它使用方便,且支持面向过程和面向对象编程,内置强大的文本处理支持,并有世界上最令人印象深刻的第三方模块的集中营。运行Perl程序在Unix命令行运行Perl程序:perl progname.pl另一种方法是,把这个放到你的脚本第一行: #!/usr/bin/env perl然后用/path/to/script.pl运行。当然,首先得让它能执行,你得chmod 755 script.pl(Unix下)。(这里的第一行假设你有env程序。

你也可以直接把你的perl解释器的路径直接放到第一行,比如#!/usr/bin/perl)安全保障默认情况下,Perl非常随意。为了使它更强健建议每个程序由下列行开始: 1. #!/usr/bin/perl 2. use strict; 3. use warnings;附加的两行从perl中捕获您的代码中的各种常见的问题。它们检查不同的事情,所以你需要两个都加上。

一个潜在的问题通过use strict;捕获,一旦它捕获到问题,会马上让你的程序停止运行。当然使用use warnings;时,仅仅出现警告(就好像命令行的-w选项)并不会停止程序。基本语法概述一个Perl脚本或程序包含一条或多条语句。

这些语句只需直接写在脚本中,而不需要像main()这样的东西作为程序入口。Perl语句以分别结束:print “Hello, world”;以星号(#)开始的语句是注释:# This is a comment(这是一条注释)空白字符会被Perl忽略: 1. print 2. “Hello, world” 3. ;……引号里的字符串除外: 1. # this would print with a linebreak in the middle 2. print “Hello 3. world”;字符串使用双引号或单引号: 1. print “Hello, world”; 2. print ‘Hello, world’;然而,只有双引号会“插入”变量值和像换行符(\n)这样的特殊字符(转义字符): 1. print “Hello, $name\n”; # works fine 2. print ‘Hello, $name\n’; # prints $name\n literally数字不需要引号: print 42;你可以使用或省略括号来传递函数的参数。它们只是在偶尔要改变或明确优先级的时候必须使用。

1. print(“Hello, world\n”); 2. print “Hello, world\n”;Perl变量类型Perl有3种主要的变量类型:标量(scalars)、数组(arrays)和哈希(hashes)。 * 标量(Scalars) 一个标量表示只有一个值: 1. my $animal = “camel”; 2. my $answer = 42; 标量的值可以是字符串、整数或浮点数,并且Perl会在需要的时候自动转换。你不需要预先声明你的变量类型,但是你需要在第一次使用它们的时候,使用my来声明它们。(这是use strict;所要求的) 标量可以用不用的方式使用: 1. print $animal; 2. print “The animal is $animal\n”; 3. print “The square of $answer is “, $answer * $answer, “\n”; 有大量的“魔法”标量的名称看上去像标点或线路噪音。

这些特殊的变量用于各种目的。现在你只要知道其中一个,这就是“默认变量”$_。它被许多Perl的函数用作默认的参数,并且它被隐式设置到某些循环结构中。 print; # prints contents of $_ by default(默认打印$_的内容) * 数组(Arrays) 数组用于表示一些值的列表: 1. my @animals = (“camel”, “llama”, “owl”); 2. my @numbers = (23, 42, 69); 3. my @mixed = (“camel”, 42, 1.23); 特殊变量$#array将返回数组最后一个元素的索引: print $mixed[$#mixed]; # last element, prints 1.23 你可能想使用$#array + 1来得到这个数组的元素个数。

别急,这很容易。在Perl预想找到一个标量值的时候(“在标量上下文”),使用@array会得到数组的元素个数:(译注:“上下文”是Perl很重要的特性之一,请查阅相关文档或在无忧Perl搜索相关内容) if (@animals < 5) { … } #译注:当@animals数组的元素个数少于5个的时候 当我们从数组获得元素值的时候,需要使用$,因为我们只要获取数组里的一个值;你请求一个标量,然后会获得一个标量。 从数组里获取多个值: (译注:获取多个值,使用@,因为我们要获取数组里的几个值(列表)。) 1. @animals[0,1]; # gives (“camel”, “llama”); 2. @animals[0..2]; # gives (“camel”, “llama”, “owl”); 3. @animals[1..$#animals]; # gives all except the first element 这叫“数组切片”。

你可以在列表里干些有意义的事情: 1. my @sorted = sort @animals; 2. my @backwards = reverse @numbers; 有两个特殊的数组,一个是命令行传到你脚本的参数@ARGV;另一个是传递给子程序的参数@_。 * 哈希 哈希用来表示键/值对: 1. my %fruit_color = (“apple”, “red”, “banana”, “yellow”); 你可以使用空白字符和=>操作符来美化上面的代码: 1. my %fruit_color = ( 2. apple => “red”, 3. banana => “yellow”, 4. ); 获取哈希元素: 1. $fruit_color{“apple”}; # gives “red” 你可以通过keys()和values()来获取键列表和值列表。 1. my @fruits = keys %fruit_colors; 2. my @colors = values %fruit_colors; 哈希没有特定的内部排序,然而你可以对键进行排序来遍历它。

和特殊的标量、数组一样,哈希也有特殊的。我们现在只要知道哈希%ENV包括所有环境变量 。 更复杂的数据类型可以使用引用来构造,允许你把列表和哈希放到另一个列表和哈希中。

引用是一个标量值,它可以引用任何其它的Perl数据类型。通过把引用存储为数组或哈希的元素值,你可以轻松创建列表/哈希中的列表/哈希。以下示例演示了使用匿名哈希引用实现的两级哈希结构 1. my $variables = { 2. scalar => { 3. description => “single item”, 4. sigil => ‘$’, 5. }, 6. array => { 7. description => “ordered list of items”, 8. sigil => ‘@’, 9. }, 10. hash => { 11. description => “key/value pairs”, 12. sigil => ‘%’, 13. }, 14. }; 15. 16. print “Scalars begin with a $variables->{‘scalar’}->{‘sigil’}\n”;变量作用域上面所有的例子都使用这种语法: 1. my $var = “value”;实际上,my不是必须的。你可以省略:(译注:前提是,你没有使用“use strict;”语句) 1. $var = “value”;但是,上面的用法将创建一个全局变量,这是一个很差的编程实践。

my创建一个词法作用域变量,这个变量只在定义它们的语句块中可见(比如一段包在大括号里的语句)。 1. my $x = “foo”; 2. my $some_condition = 1; 3. if ($some_condition) { 4. my $y = “bar”; 5. print $x; # prints “foo” 6. print $y; # prints “bar” 7. } 8. print $x; # prints “foo” 9. print $y; # prints nothing; $y has fallen out of scope结合使用my和在Perl脚本开头使用use strict,解释器将捕获常见的编程错误。比如,在上面的例子中,最后的print $y将引发一个编译时错误并阻止程序运行。

强烈建议使用use strict语句!条件和循环语句Perl有许多常用的条件和循环语句。Perl 5.10甚至提供了分支语句(拼作given/when)。条件可以是任何Perl表达式。比较和布尔条件语句中常用的逻辑运算符,请参阅有关信息的下一节中的运算符的列表。

* if 1. if ( condition ) { 2. … 3. } elsif ( other condition ) { 4. … 5. } else { 6. … 7. } 还有否定版本的: 1. unless ( condition ) { 2. … 3. } 这个否定版比if (!condition)更易读。 注意,大括号是必须的,即使代码块中只有一行。不过,这里有一个方法可以让你通过类似英语的语法来实现单行条件语句: 1. # the traditional way 2. if ($zippy) { 3. print “Yow!”; 4. } 5. 6. # the Perlish post-condition way 7. print “Yow!” if $zippy; 8. print “We have no bananas” unless $bananas; * while 1. while ( condition ) { 2. … 3. } 为了和unless同样的理由,也有一个否定版本: 1. until ( condition ) { 2. … 3. } 你也可以在后置条件里使用while: print “LA LA LA\n” while 1; # loops forever * for 跟C语言一样: 1. for ($i = 0; $i <= $max; $i++) { 2. … 3. } 自然Perl提供了更友好的列表遍历循环foreach以后,C语言风格的for循环在Perl几乎不需要了。

* foreach 1. foreach (@array) { 2. print “This element is $_\n”; 3. } 4. 5. print $list[$_] foreach 0 .. $max; 6. 7. # you don’t have to use the default $_ either… 8. foreach my $key (keys %hash) { 9. print “The value of $key is $hash{$key}\n”; 10. }内置操作符和函数Perl 附带了各种各样的内置函数。我们已经看到的几个,包括print,sort和reverse。Perl常见操作符(运算符) * 算术 1. + 加法 2. – 减法 3. * 乘法 4. / 除法 * 数字比较 1. == 等于 2. != 不等于 3. < 小于 4. > 大于 5. <= 小于等于 6. >= 大于等于 * 字符串比较 1. eq 等于。

如何学习perl面向对象编程

图片[3]-perl初学菜鸟-学吧号

per

如何用Perl发送邮件

图片[4]-perl初学菜鸟-学吧号

实例#!/usr/bin/perl# 接收邮箱,这里我设置为我的 QQ 邮箱,你需要修改它为你自己的邮箱$to = ‘429240967@qq.com’;#发送者邮箱$from = ‘test@runoob.com’;#标题$subject = ‘菜鸟教程 Perl 发送邮件测试’;$message = ‘这是一封使用 Perl 发送的邮件。

perl的菜鸟问题:如何去掉数组里的重复元素

图片[5]-perl初学菜鸟-学吧号

@m�

菜鸟求助:关于perl多进程

图片[6]-perl初学菜鸟-学吧号多进程or多线程?可以看一下http://www.cnblogs.com/eavn/archive/2010/08/28/1811381.htmlperl fork多进程程序实例讲解perl的多进程程序开发,可以参考:http://www.cnblogs.com/luoxiake/articles/2682605.html当Perl里面要触发另一个Perl时,如果不希望等待,可以用threads创建线程; use threads;my $t1 = threads->create(\&t1, “param1”, “param2” ); my $t2 = threads->create(\&t2, “param1”, “param2” );$t1->join;$t2->join; 如下ibm网站上面的中文教程写得比较易懂,可以学习一下:https://www.ibm.com/developerworks/cn/linux/l-cn-perl-thread/如果可以看懂英文,也可以在装了perl电脑的命令行中输入perldoc perlthrtut查看官方教程,或者perl官网:http://perldoc.perl.org/perlthrtut.html

THE END
喜欢就支持一下吧
点赞5
温馨提示:

1、本内容转载于网络,版权归原作者所有!
2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3、本内容若侵犯到你的版权利益,请联系我QQ:243371741,会尽快给予删除处理!