RSS
热门关键字:  数据挖掘  数据仓库  商业智能  人工智能  搜索引擎
当前位置 :| 首页>编程技术>cgi/perl>

Perl直接入门详尽指南

来源: 作者: 时间:2007-01-27 点击:

芝麻开门

  说起编程语言,简单的来说无非就是这样几个必不可少的基本元素:变量、数据、表达式、流程控制语句(包括条件、分支、循环)、函数、对象。具体到语言上,大部分的内容只是表达的形式不同而已。而Perl与C又有什么区别呢?

  首先要知道,Perl是一种脚本语言。所谓的脚本,就是没有主函数,从最开始一行一行的按照顺序解释执行(老版Basic不也是如此吗)。因此,尽管把你的思路转化为流程用Perl表达出来吧。

  其次,Perl的设计中参考了很多语言的长处,并避免了设计上的缺陷。因此Perl的很多语法你可能都会觉得似曾相识。我把Perl的语法总结了一下,和C语言做了一个简单的对比表格。表格左右两边的语句是C和Perl对应表达同一个功能各自的不同方式。如果读者有C语言的经验,相信看到这个对比可以很快的上手吧?

语法元素

CPerl

Perl语法说明 数据挖掘研究院

注释 数据挖掘实验室

/* … */

数据挖掘研究院

# … 数据挖掘研究院

只支持单行注释 数据挖掘实验室

变量

数据挖掘研究院

int a, b, c; 数据挖掘研究院

char c=’A’; 数据挖掘研究院

int x[10];

my ($a, $b, $c); 数据挖掘研究院

my $c="A"; 数据挖掘实验室

my @x; 数据挖掘研究院

my %h;

数据挖掘研究院

声明使用my标示 数据挖掘研究院

表示值的变量以$开头,表示数组的变量以@开头,表示哈希表的变量以%开头。

数据挖掘实验室

声明可以省略(不建议)

字符串

char* h1=”hello ”; 数据挖掘研究院

char* h2=”hello\n”; 数据挖掘实验室

$h1=”hello ”; 数据挖掘研究院

$h2=’hello ’; 数据挖掘实验室

双引号解释内部的 ,而单引号则不解释

一维数组

数据挖掘研究院

int arr[10]; 数据挖掘研究院

arr[0]=0; 数据挖掘研究院

for(i=0;i<10;i++) 数据挖掘研究院

arr[i]=i;

数据挖掘研究院

my @arr; 数据挖掘研究院

$arr[0]=0; 数据挖掘研究院

@arr[3..5]=(3..5);

数组声明以@标示 数据挖掘研究院

动态数组,不需要指定大小 数据挖掘研究院

数组下标从0开始 数据挖掘研究院

访问数组元素值的时候,要以$开头表示访问的是数值

数据挖掘实验室

[3..5]表示数组中下标为35之间的元素组成的数组

数组之间可以直接赋值 数据挖掘研究院

多维数组 数据挖掘研究院

int arr[10][10];

数据挖掘研究院

arr[0][1]=9; 数据挖掘研究院

my @arr; 数据挖掘实验室

$arr[0][1]=9;

Perl并不直接支持多维数组,而是以数组引用的方式间接支持。例如arr[0]的内容就是一个数组的引用地址。 数据挖掘研究院

指针 数据挖掘研究院

char c;

int* x=&c;

c="a"; 数据挖掘研究院

printf(*x);

数据挖掘研究院

my $c;

数据挖掘实验室

my $x=$c;

$c="a";

数据挖掘实验室

print $x; 数据挖掘研究院

C中的&类似,意思是取引用 数据挖掘研究院

 

void hello() {

数据挖掘研究院

  printf(“Hello ”); 数据挖掘研究院

}

void (*hi)()=hello; 数据挖掘研究院

(*p)();

数据挖掘研究院

sub hello{

数据挖掘实验室

       print "Hello ";

} 数据挖掘研究院

my $hi = *hello;

数据挖掘研究院

&$hi; 数据挖掘研究院

&表示调用函数 数据挖掘研究院

*取函数的代码地址 数据挖掘研究院

不必用括号把参数括起来

调用时的括号也是可选的 数据挖掘研究院

条件语句 数据挖掘研究院

if (x>0) x=0; 数据挖掘研究院

x>0 ? x=0 : ;

数据挖掘研究院

if ($x>0) { $x=0; } 数据挖掘实验室

$x=0 if $x>0; 数据挖掘实验室

$x=0 unless $x<=0;

数据挖掘研究院

$x>0 ? $x=0 : ; 数据挖掘研究院

if 结构可以反转,意义不变,注意前句没有分号。

顾名思义, unless是“除非”的意思。这里的四个表达方式是等价的。注意第一种方式中,条件部分的圆括号和语句部分的花括号是不可省略的。 数据挖掘研究院

循环语句

数据挖掘研究院

foreach (@arry)

foreach my $key(@ary) 数据挖掘研究院

foreach $count (1..10) 数据挖掘研究院

for/while的语法都和C类似。 数据挖掘研究院

foreach关键字也可以用for,意义不变。

数据挖掘研究院

函数

int max(int x, int y)

{

  return x>y?x:y;

} 数据挖掘研究院

  数据挖掘研究院

int n=max(1,2); 数据挖掘研究院

sub max 数据挖掘研究院

{ 数据挖掘研究院

       my ($x, $y)=@_;

       return $x>$y?$x:$y; 数据挖掘研究院

}

数据挖掘研究院

my $n=max(1,2) 数据挖掘实验室

注意下划线”_”也是一个合法的变量名。而@_Perl内置的一个数组,内容为函数的参数。 数据挖掘研究院

my ($x, $y) 表示声明了一个有两个元素的数组,并将两个元素映射到$x$y上。

数据挖掘研究院

($x,$y)=@_;则表示两个数组之间的复制,@_中对应的元素的值就赋值给了$x$y.这是一个简便的写法,也可以这样写

my $x=$_[0]; my $y=$_[1];

return是可选的,默认返回最后一个表达式的值

数据挖掘研究院

语法约束 数据挖掘研究院

1.       编译时打开编译器所有的警告选项 数据挖掘研究院

2.       使用lint工具 数据挖掘研究院

 

3.       perl –w myprogram.pl 打开运行警告开关,如果运行时Perl检查到了可能的错误,会显示警告信息,否则它默认是什么也不提示继续执行。 数据挖掘研究院

4.       #!/usr/bin/perl –w 在代码文件第一行中加入-w选项开关 数据挖掘研究院

5.       use strict; 使用严格语法约束 数据挖掘研究院

运行

编译后直接执行 数据挖掘研究院

 

1.       perl myprogram.pl 手工执行

数据挖掘研究院

2.       #!/usr/bin/perl 数据挖掘研究院

Unix下在代码第一行加入,然后给文件加上可执行的属性 chmod +x myprogram.pl,之后就可以用./myprogram.pl命令来运行。 数据挖掘研究院

3.       Windows下,安装ActivePerl的时候,已经将.pl后缀的文件和perl的解释程序关联起来了,因此直接双击文件图标就可以运行。

数据挖掘研究院


  需要说明的是,在Perl的世界中有一句名言“条条大路通罗马”, 这句话的意思是说同样一件事情Perl允许你用很多种不同的方式去做。因此上表的例子风格是按照C的习惯来写的,并且为了简化起见,只是挑选了与C相似的内容。事实上,Perl包含了很多C没有的东西,例如内置的Hash表、队列、正则表达式、格式定义等等。

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?
热点关注
相关文章