Perl
camper001
这个作者很懒,什么都没留下…
展开
-
2 Perl - 标量数据概述
在英语以及许多其它的语言中,需要区别单数和复数。作为一门由语言学家发明的语言,Perl 也是类似的。同一般情况一样,Perl 也有数据类型—标量◆。标量是Perl 中最简单的数据类型。大多数的标量是数字(如255 或3.25e20)或者字符串(如hello◆或者盖茨堡地址)。你也许把数字和字符串看作不同的事物,但Perl 几乎以相同的观点来看待它们。◆这个概念和数学或者物理学中的标量(一个单独的是事物)没有多少关系;Perl 中也没有向量。◆如果使用过别的编程语言,你可能把hello 看作5 个字符转载 2010-12-22 15:22:00 · 538 阅读 · 0 评论 -
2 Perl - undef值 与 defined函数
undef 值在变量被赋值之前使用它会有什么情况发生呢?通常不会有什么严重的后果。变量在第一次赋值前有一个特殊值undef,按照Perl 来说就是:“这里什么也没有,请继续”。如果这里的“什么也没有”是一些“数字”,则表现为0。如果是“字符串”,则表现为空串。但undef 既非数字也非字符串,它是另一种标量类型。由于undef 在需要数字的地方可以自动转化为0,因此可以如下的写代码:#将一些基数相加#n = 1;while($n $sum += $n;$n +=2;#下一原创 2010-12-23 18:17:00 · 1644 阅读 · 0 评论 -
3 Perl - 访问数组元素
访问数组元素如果你使用过其它语言的数组,那对于Perl 可以通过索引值来访问元素的做法不会觉得奇怪。数组中的元素是由连续整数编了号的,其从0 开始,每增加一个元素,其索引值加一,如:$fred[0] = “yabba”;$fred[1]= “dabba”;$fred[2] = “doo”;数组名字(本例中:fred)和标量是属于完全不同的命名空间(namespace)。同一程序也可以同时包含叫做$fred 的标量变量。Perl 将它们当作完全不同的事物来看待,不会混淆◆。(但维护原创 2010-12-23 18:42:00 · 3545 阅读 · 0 评论 -
3 Perl - 特殊的数组索引
特殊的数组索引如果将一个元素存储在数组最后元素的后面的位置,数组会自动增长的。Perl 没有长度的限制,只要你有足够的内存。如果Perl 需要创建元素,则其值为undef。$rocks[0] = ‘bedrock’; #一个元素$rocks[1] = ‘slate’; #又一个$rocks[2] = ‘lava’; #又一个$rocks[3] = ‘crushed rock’;#又一个$rocks[99] = ‘schist’; #现在有95 个undef 元素有时需要知道数组最原创 2010-12-23 18:46:00 · 1762 阅读 · 0 评论 -
3 Perl - 列表
列表数组是由括号括起来并且其元素由逗号分隔开的列表。这些值组成了数组的元素:(1,2,3) #含有1,2,3 的列表(1,2,3,) #同上,最后一个逗号被忽略() #空列表-0 个元素(1 ..100) #包含100 个整数的列表最后一个例子使用了范围操作符(range operator)..,它创建了从左值到右值之间所有值的列表。(1 ..5) #同(1,2,3,4,5)(1.7..5.7) #同上— 最小值和最大值被转换成整数(5 ..1) #空列表— ..中的左值应小于右原创 2010-12-23 18:52:00 · 491 阅读 · 0 评论 -
3 Perl - 列表 - qw
<br />qw 简写<br />实践表明,字符串的列表(如上例)在Perl 中经常使用。有一种简便的方法可以不用输入大量的引号而达到类似的功能,<br />那就是使用qw。<br />qw(fred barney betty wilma dino ) #同上,但输入更少<br />qw 表示“quoted words”或者“quoted by whitespace,”这依赖于你问的是谁。无论那种解释,Perl 将它们当作单引号字符串<br />处理,你不能像双引号那样在qw 中使用/n原创 2010-12-23 19:06:00 · 2266 阅读 · 0 评论 -
3 Perl - 列表 - 列表赋值
列表赋值和标量值类似,列表值也可以赋给变量:($fred, $barney, $dino) = (“flintstone”, “rubble”, undef);左边列表中的每一个变量都得到了一个新值,和利用3 个赋值语句得到的结果是一样的。由于列表在赋值之前已经建立,因此在Perl 中可以使用如下的简单方法交换两个变量的值◆:◆和C 语言不同,在C 语言中没有完成此类操作的简单方法。C 程序员通常需要使用临时变量,可能是使用宏(macro)来定义的。($fred, $barney) = ($原创 2010-12-23 19:11:00 · 1783 阅读 · 0 评论 -
3 Perl - 列表赋值 - shift 和unshift 操作
<br />shift 和unshift 操作<br /><br />push 和pop 对数组的末尾进行操作(或者说数组右边有最大下标的元素,这依赖于你是怎样思考的)。相应的,unshift 和<br />shift 对一个数组的开头进行操作(数组的左端有最小下标的元素)。下面是一些例子:<br />@array = qw# dino fred barney #;<br />$m = shift (@array); #$m 得到“dino”, @array 现在为(“fred”, “barne原创 2010-12-24 09:31:00 · 805 阅读 · 0 评论 -
3 Perl - 列表赋值 - 将数组插入字符串
<br />将数组插入字符串<br /><br />和标量类似,数组也可以插入双引号的字符串中。插入的数组元素会自动由空格◆分开:<br />◆分隔符是变量$’’的值,其默认值为空格(space)。<br /><br />@rocks = qw{ flintstone slate rubble };<br />print “quartz @rocks limestone/n”; #输出为5 种rocks 由空格分开<br /><br />插入的数组元素的第一个元素前面和最后一个元素后面不会插原创 2010-12-24 09:41:00 · 1701 阅读 · 0 评论 -
3 Perl - 最常用的默认变量:$_
<br />如果在foreach 循环中省略了控制变量,那Perl 会使用其默认的变量:$_。除了其不寻常的名字外,这和普通变量类似,如<br />下面代码所示:<br />foreach(1..10){ #使用默认的变量$_<br />print “I can count to $_!/n”;<br />}<br /> <br />虽然它不是Perl 中唯一的默认变量,但无疑是使用的最普遍的。你将在许多例子中看到Perl 在没有要求它使用某个变量或<br />值时,会自动使用变量$_,这将原创 2010-12-24 10:12:00 · 794 阅读 · 0 评论 -
3 Perl - 列表赋值 - pop 和push 操作
可以使用新的,更大的索引(index)将新值存放在数组的末尾。但实际上,Perl 程序员不使用索引◆。因此,在下面几段中,我们将介绍几种不使用索引来操作数组的方法。◆当然,我们是在开玩笑,但这个玩笑基于Perl 的一些事实。数组中使用索引并没有发挥Perl 的威力。如果使用pop, push 和类似的操作符以避免使用索引,那你的程序通常会比大量使用索引的情况要快,而且能避免“差一位(off-by-one)”类型的错误,这类错误通常叫做“边界值错误”。有时,一个初级的Perl 程序员(想比较P原创 2010-12-24 09:14:00 · 2213 阅读 · 0 评论 -
3 Perl - 列表 - reverse 操作
<br />reverse 操作<br />reverse(逆转)操作将输入的一串列表(可能是数组)按相反的顺序返回。如果不喜欢范围操作符: ..,只能从小到大,<br />那可以使用reverse 来解决这个问题:<br />@fred = 6 ..10;<br />@barney = reverse (@fred); #得到10,9,8,7,6<br />@wilma = reverse 6 ..10; #同上,没有使用额外的数组<br />@fred = reverse @fred原创 2010-12-24 10:38:00 · 1277 阅读 · 0 评论 -
3 Perl - 列表 - sort 操作
<br />sort 操作<br />sort 操作将输入的一串列表(可能是数组)根据内部的字符顺序进行排序。如对于ASCII 字符串,将根据ASCII 序进行排<br />序。当然,ASCII 中有一些奇怪的地方,如大写字母在小写字符的前面,数字在字符的前面,而标点符号散布在各处。但<br />按ASCII 排序只是其默认的行为,在第十三章中,可以看到如何按你想要的顺序进行排序的方法:<br />@rocks = qw/ bedrock slate rubble granite /;<br /原创 2010-12-24 10:40:00 · 463 阅读 · 0 评论 -
3 Perl - 列表 - foreach 控制结构
foreach 控制结构如果能处理整个数组或列表,那将是非常方便的,因此Perl 提供了这种方法。foreach 从列表的第一个元素一直循环执行到最后一个元素,一次迭代一个:foreach $rock (qw/ bedrock slate lava /){print “One rock is $rock./n”; #打印出3 种rocks}控制变量(本例中为$rock)每一次迭代从列表中取出一个新值。第一次为“bedrock”,第三次为“lava”。控制变量不是这些列表元素中的一个拷贝而原创 2010-12-24 09:44:00 · 610 阅读 · 0 评论 -
2 Perl - while控制结构
<br />和许多的程序语言一样,Perl 也提供了循环结构◆。while 语句可以循环执行其内部的一块代码直到其条件非真:<br />◆基本上每个程序员都有创建过无限循环语句的经历。如果程序不停的运行,你可以像关闭系统中别的程序那样来关闭Perl 程序。通常<br />是使用CTRL+C;检查你的系统文档来了解具体的信息。<br /> <br />$count = 0;<br />while ($count < 10) {<br />$count + = 2;<br />print “co原创 2010-12-23 17:44:00 · 689 阅读 · 0 评论 -
2 Perl - chomp 操作
<br />chomp 操作<br />第一次读到chomp 函数时,它看起来过于专门化。它对变量起作用,而此变量含有字符串。如果字符串结尾有换行符,chomp<br />可以去掉它。这基本上就是它能完成的所有功能,如下例:<br /><br />$text = “a line of text/n”; #也可以由<STDIN>输入<br />chomp($text); #去掉换行符(/n)。<br /><br />它非常有用,基本上你的每一个程序都会用到它。如你将知道,这是将字符串末尾换行符原创 2010-12-23 17:30:00 · 608 阅读 · 0 评论 -
2 Perl - 字符串-1
<br />2.2 字符串<br />字符串是一串字符(如hello)。字符串可能是字符的任意组合◆。最短的字符串不含任何字符。最长的字符串,可以填满<br />整个内存。这符合Perl 的哲学,只要有可能就不加任何内嵌的限制。通常字符串是可打印字符,数字,标点符号的序列(从<br />ASCII 32 到ASCII 126)。但,Perl 中字符串可以包含任意字符,意味着利用字符串(string)你可以创建,遍历,操作二进制<br />数据,而利用别的方法可能遇到极大的困难。例如,你可以把原创 2010-12-23 11:03:00 · 739 阅读 · 0 评论 -
Perl - Hello world
依据传统,关于计算机语言的书籍,应当以“Hello,world”这个程序开始。下面是其Perl 版本:#! /usr/bin/perlprint “Hello,word!/n”;我们假设你已经把它输入到文本编辑器中。(别担心这个程序的含义以及它如何执行。你将很快知道)。可以将它以你喜欢的任何名字命名。Perl 不需要任何特别的文件名字或后缀名,但最好不要使用后缀名◆。有些系统中需要像.plx(PerLeXecutable,可执行的Perl)这样的后缀;可以查看系统上的release no转载 2010-12-22 15:02:00 · 615 阅读 · 0 评论 -
Perl - 快速了解Perl
#! /usr/bin/perl @lines= `perldoc –u –f atan2`; foreach(@lines){ s//w]+)//U$1/g; print;}第一行是#!这一行,我们已经见过了。你也许要修改它,我们已经讨论过了。第二行运行了一个外部命令,由` `括起来了。(反引号` 通常在美式键盘数字1 的左边。不要和单引号‘混淆了。)我们用的命令的是perldoc –u –f atan2;在命令行输入这个命令,看看能得到什么结果。perldoc 这个命原创 2010-12-22 15:16:00 · 924 阅读 · 0 评论 -
2 Perl - 字符串-2
2.2.3 字符串操作符字符串可由. 操作符连接(是的,只是一个点) 。它不会改变任何字串,就像2+3 不会改变2 或3 一样。串联之后的字符串可供以后使用:“hello”. “world” # 同于“helloworld”“hello”. ‘’. “world”#同于“hello world”‘hello world’. “/n” #同于“hello world/n”串联必须由. 操作符进行。同别的语言不一样,串联可通过把两个放在一起来达到。一个特殊的操作符是字符串重复操作符(原创 2010-12-23 11:57:00 · 1233 阅读 · 0 评论 -
2 Perl - Warnings
当程序中包含可能的错误时,可以要求Perl 警告你。运行程序时,可以在命令行中使用–w 这个参数把警告打开:$ perl–w my_program或者,如果一直都需要警告(warning),可以在#! 这一行加上-w,如:#! /usr/bin/perl –w这条命令甚至在non-Unix 系统中也有效,由于在这些系统中通常与Perl 的具体路径关系不大,因此可如下书写#! /usr/bin/perluse warnings;现在,如果将‘12fred34’当作数字来用,Perl 将警告你:原创 2010-12-23 14:14:00 · 704 阅读 · 0 评论 -
2 - 标量变量 - 定义
标量变量可以存放一个标量值。标量变量的名字由一个美圆符号($)后接Perl 标识符:由字母或下划线开头,后接字母,数字,或者下划线。或者说由字母,数字和下划线组成,但不能由数字开头。大小写是严格区分的:变量$Fred 和变量$fred是不同的。任意字母,数字,下划线都有意义,如:$a_very_long_variable_that_ends_in_1和变量:$a_very_long_variable_that_ends_in_2是不同的。原创 2010-12-23 14:18:00 · 949 阅读 · 0 评论 -
2 - Perl - 变量内插
字符串中标量变量的内插当一个字符串由双引号括起来时,如果变量前没有反斜线,则变量会被其值内插◆。也就是说字符串中的标量变量◆将被其值替换。◆这和数学或统计学中的内插含义是不同的◆还有一些其它的变量类型,在后面章节中将看到$mean = “brontosaurus steak”;$barney = “fred ate a $meal”; #$barney 现在是“fred ate a brontosaurus steak”$barney = ‘fred ate a’. $meal;原创 2010-12-23 15:11:00 · 1282 阅读 · 0 评论 -
2 - Perl - 比较运算符
比较关系数字字符串相等= = eq不等!= ne小于大于> gt小于或等于大于或等于>= ge下面是一些关于运算符的例子:35 != 30+5 #false35 == 35.0 #true‘35’eq‘35.0’ #false (按照字符串比较)‘fred’lt ‘barney’ #false‘fred’lt ‘free’ #true‘fred’eq ‘fred’ #true‘fred’eq ‘Fred’ #false‘’gt ‘’ #true原创 2010-12-23 15:29:00 · 2906 阅读 · 0 评论 -
2 Perl - Boolean
在if 控制结构的条件判断部分可以使用任意的标量值。这在某些时候将很方便,如:$is_bigger = $name gt‘fred’;if($is_bigger){… }那么,Perl 是怎么判断其值得true 或false 呢?Perl 不同于其它的一些语言,它没有Boolean 类型。它利用如下几条规则◆:原创 2010-12-23 15:39:00 · 1705 阅读 · 0 评论 -
2 Perl - 用户输入
<br />用户输入<br /><br />现在,可能想你的Perl 程序怎样才能从键盘上得到输入呢?有一种简单方法:使用行输入操作符(line-input operator),<br /><STDIN>◆。<br />◆是行输入运算符对文件句柄STDIN 的操作。但直到第五章才介绍文件句柄。<br /><STDIN>作为标量值来使用的,Perl 每次从标准输入中读入文本的下一行,将其传给<STDIN>。标准输入可以有很多种;<br />默认的是键盘。如果还没有值输入<STDIN>,Perl原创 2010-12-23 15:44:00 · 4198 阅读 · 0 评论 -
2 Perl - 数字标量
所有数字内部的格式一致整数浮点数 非十进制整数 数字操作符原创 2010-12-22 15:29:00 · 1990 阅读 · 1 评论 -
2 - 标量变量 - 赋值
<br />标量赋值<br />标量变量最通常的操作是赋值:将值赋给变量。Perl 中的赋值符是等号(和许多语言类似),将等号右边的值赋给等号左边的变量:<br />$fred = 17; #将17 赋给变量$fred<br />$barney =‘hello’; #将五个字母的字符串‘hello’赋给$barney<br />$barney = $fred + 3;# 将$fred 的值加上三赋给$barney (20)<br />$barney= $barney*2;#将变量$barney原创 2010-12-23 14:46:00 · 683 阅读 · 0 评论 -
2 Perl - if 控制结构
<br />if 控制结构<br />一旦能比较两个值时,就希望能根据这些比较结果作判断。和别的语言类似,Perl 中也提供了if 控制结构:<br />if($name gt ‘fred’){<br />print “‘$name’comes after ‘fred’in sorted order./n”;<br />}<br />如果需要另一种选择,可以使用关键字else:<br /><br />if($name gt ‘fred’){<br />print “‘$name’co原创 2010-12-23 15:33:00 · 651 阅读 · 0 评论 -
SQL 10 函数 1 数学函数
Maths Functionality原创 2011-02-25 17:34:00 · 644 阅读 · 0 评论