perl编写genesis脚本.docx
- 文档编号:23101664
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:33
- 大小:328.27KB
perl编写genesis脚本.docx
《perl编写genesis脚本.docx》由会员分享,可在线阅读,更多相关《perl编写genesis脚本.docx(33页珍藏版)》请在冰豆网上搜索。
perl编写genesis脚本
一perl是什么?
二perl在哪里?
三运行四注释一、Perl是什么?
Perl是PracticalExtractionandReportLanguage的缩写,它是由LarryWall设计的,并由他不断更新和保护,用于在UNIX环境下编程。
.Perl具有高级语言(如C)的壮大能力和灵活性。
事实上,你将看到,它的许多特性是从C语言中借用来的。
.与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告知Perl来运行罢了。
这意味着Perl关于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。
.Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具有的很多功能。
Perl还支持sed到Perl及awd到Perl的翻译器。
简而言之,Perl象C一样壮大,象awk、sed等脚本描述语言一样方便。
二、Perl在哪里?
Perl通常位于/usr/local/bin/perl或/usr/bin/perl中。
你能够在Internet用匿名FTP免费取得它,如{{ftp:
//prep.ai.mit.edu/pub/gnu/perl-5.004.tar.gz}}。
安装进程为:
(1)解压:
$gunzipperl-5.004.tar.gz
$tarxvf- (2)编译: $makemakefile (3)放置: 将编译生成的可执行文件拷贝到可执行文件通常所在目录,如: $copy 注: 这需要系统治理员权限。 三、运行 用文本编辑器编辑好你的Perl程序,加上可执行属性: $chmod+x $./ 若是系统提示: "/usr/local/bin/perlnotfound",那么说明你没有安装成功,请从头安装。 注: 你的程序的第一行必需为#! /usr/local/bin/perl(perl所在位置)。 四、注释: 注释的方式为在语句的开头用字符#,如: #thislineisacomment 注: 建议常常利用注释使你的程序易读,这是好的编程适应。 未完待续本教程为flamephoenix翻译整理本教程欢迎下载、转载和链接,转载必需保留本说明并维持文章完整。 本教程不许诺以任何形式用于商业用途。 对本教程有何疑问、更正或建议请告知我,谢谢。 第二章 简单变量 一整型二浮点数三字符串大体上,简单变量确实是一个数据单元,那个单元能够是数字或字符串。 一、整型 1、整型 PERL最经常使用的简单变量,由于其与其它语言大体相同,再也不赘述。 例: $x=12345; if(1217+116==1333){ #statementblockgoeshere } 整型的限制: PERL事实上把整数存在你的运算机中的浮点寄放器中,因此事实上被看成浮点数看待。 在多数运算机中,浮点寄放器能够存贮约16位数字,擅长此的被抛弃。 整数实为浮点数的特例。 2、8进制和16进制数 8进制以0打头,16进制以0x打头。 例: $var1=047;(等于十进制的39) $var2=0x1f;(等于十进制的31) 二、浮点数 如11.4、-0.3、.3、3.、54.1e+02、5.41e03 浮点寄放器通常不能精准地存贮浮点数,从而产生误差,在运算和比较中要专门注意。 指数的范围一样为-309到+308。 例: #! /usr/local/bin/perl $value=9.01e+21+0.01-9.01e+21; print("firstvalueis",$value,"\n"); $value=9.01e+21-9.01e+21+0.01; print("secondvalueis",$value,"\n"); --------------------------------------------------------- $program3_3 firstvalueis0 secondvalueis0.01 三、字符串 惯用C的程序员要注意,在PERL中,字符串的末尾并非含有隐含的NULL字符,NULL字符能够出此刻串的任何位置。 .双引号内的字符串中支持简单变量替换,例如: $number=11; $text="Thistextcontainsthenumber$number."; 则$text的内容为: "Thistextcontainsthenumber11." .双引号内的字符串中支持转义字符 Table3.1.Escapesequencesinstrings. \L、\U、\Q功能能够由\E关闭掉,如: $a="T\LHISISA\ESTRING";#sameas"ThisisaSTRING" .要在字符串中包括双引号或反斜线,那么在其前加一个反斜线,反斜线还能够取消变量替换,如: $res="Aquote\"andAbackslash\\"; $result=14; print("Thevalueof\$resultis$result.\n")的结果为: Thevalueof$resultis14. .可用\nnn(8进制)或\xnn(16进制)来表示ASCII字符,如: $result="\377";#thisisthecharacter255,orEOF $result="\xff";#thisisalso255 .单引号字符串 单引号字符串与双引号字符串有两个区别,一是没有变量替换功能,二是反斜线不支持转义字符,而只在包括单引号和反斜线时起作用。 单引号另一个特性是能够跨多行,如: $text='Thisistwo linesoftext '; 与下句等效: $text="Thisistwo\nlinesoftext\n"; .字符串和数值的相互转换 例1: $string="43"; $number=28; $result=$string+$number;#$result=71 假设字符串中含有非数字的字符,那么从左起至第一个非数字的字符,如: $result="hello"*5;#$result=0 $result="12a34"+1;#$result=13 .变量初始值 在PERL中,所有的简单变量都有缺省初始值: "",即空字符。 可是建议给所有变量赋初值,不然当程序变得大而复杂后,很容易显现不可预料且很难调试的错误。 未完待续本教程为flamephoenix翻译整理本教程欢迎下载、转载和链接,转载必需保留本说明并维持文章完整。 本教程不许诺以任何形式用于商业用途。 对本教程有何疑问、更正或建议请告知我,谢谢。 第三章 操作符一算术操作符二整数比较操作符三字符串比较操作符 四逻辑操作符五位操作符六赋值操作符 七自增自减操作符八字符串联结和重复操作符九逗号操作符十条件操作符11操作符的顺序 一、算术操作符 : +(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负) (1)乘幂的基数不能为负,如(-5)**2.5#error; (2)乘幂结果不能超出运算机表示的限制,如10**999999#error (3)取余的操作数如不是整数,四舍五入成整数后运算;运算符右边不能为零 (4)单目负可用于变量: -$y;#等效于$y*-1 二、整数比较操作符 操作符<=>结果为: 0-两个值相等 1-第一个值大 -1-第二个值大 三、字符串比较操作符 四、逻辑操作符 逻辑或: $a||$b或$aor$b 逻辑与: $a&&$b或$aand$b 逻辑非: ! $a或not$a 逻辑异或: $axor$b 五、位操作符 位与: & 位或: | 位非: ~ 位异或: ^ 左移: $x<<1 右移: $x>>2 注: 不要将&用于负整数,因为PERL将会把它们转化为无符号数。 六、赋值操作符 =可在一个赋值语句中显现多次,如: $value1=$value2="astring"; .=作为子表达式 ($a=$b)+=3; 等价于 $a=$b; $a+=3; 但建议不要利用这种方式。 七、自增自减操作符 : ++、--(与C++中的用法相同) .不要在变量两边都利用此种操作符: ++$var--#error .不要在变量自增/减后在同一表达式中再次利用: $var2 =$var1+++$var1;#error .在PERL中++可用于字符串,但当结尾字符为'z'、'Z'、'9'时进位,如: $stringvar="abc"; $stringvar++;#$stringvarcontains"abd"now $stringvar="aBC"; $stringvar++;#$stringvarcontains"aBD"now $stringvar="abz"; $stringvar++;#$stringvarnowcontains"aca" $stringvar="AGZZZ"; $stringvar++;#$stringvarnowcontains"AHAAA" $stringvar="ab4"; $stringvar++;#$stringvarnowcontains"ab5" $stringvar="bc999"; $stringvar++;#$stringvarnowcontains"bd000" .不要利用--,PERL将先将字符串转换为数字再进行自减 $stringvar="abc"; $stringvar--;#$stringvar=-1now .若是字符串中含有非字母且非数字的字符,或数字位于字母中,那么通过++运算前值转换为数字零,因此结果为1,如: $stringvar="ab*c"; $stringvar++; $stringvar="ab5c"; $stringvar++; 八、字符串联结和重复操作符 联接: . 重复: x 联接且赋值(类似+=): .= 例: $newstring="potato"."head"; $newstring="t"x5; $a="be"; $a.="witched";#$aisnow"bewitched" 九、逗号操作符 其前面的表达式先进行运算,如: $var1+=1,$var2=$var1; 等价于 $var1+=1; $var2=$var1; 利用此操作符的唯一理由是提高程序的可读性,将关系紧密的两个表达式结合在一路,如: $val=26; $result=(++$val,$val+5);#$result=32 注意若是此处没有括号那么意义不同: $val=26; $result=++$val,$val+5;#$result=27 十、条件操作符 与C中类似,条件? 值1: 值2,当条件为真时取值1,为假时取值2,如: $result=$var==0? 14: 7; $result=43+($divisor==0? 0: $dividend/$divisor); PERL5中,还能够在赋值式左侧利用条件操作符来选择被赋值的变量,如: $condvar==43? $var1: $var2=14; $condvar==43? $var1=14: $var2=14; 十一、操作符的顺序 .操作符结合性(associativity): 建议: 1、当你不确信某操作符是不是先执行时,必然要用括号明确之。 2、用多行、空格等方式提高程序的可读性。 未完待续本教程为flamephoenix翻译整理本教程欢迎下载、转载和链接,转载必需保留本说明并维持文章完整。 本教程不许诺以任何形式用于商业用途。 对本教程有何疑问、更正或建议请告知我,谢谢。 第四章 列表和数组变量一列表二数组--列表的存贮一、列表 列表是包括在括号里的一序列的值,能够为任何数值,也可为空,如: (1,5.3,"hello",2),空列表: ()。 注: 只含有一个数值的列表(如: (43.2))与该数值本身(即: 43.2)是不同的,但它们能够相互转化或赋值。 列表例: (17,$var,"astring") (17,26<<2) (17,$var1+$var2) ($value,"Theansweris$value")二、数组--列表的存贮 列表存贮于数组变量中,与简单变量不同,数组变量以字符"@"打头,如: @array=(1,2,3); 注: (1)数组变量创建时初始值为空列表: ()。 (2)因为PERL用@和$来区分数组变量和简单变量,因此同一个名字能够同时用于数组变量和简单变量,如: $var=1; @var=(11,27.1,"astring"); 但如此很容易混淆,故不推荐。 1、数组的存取 .对数组中的值通过下标存取,第一个元素下标为0。 试图访问不存在的数组元素,那么结果为NULL,但如果是给超出数组大小的元素赋值,那么数组自动增加,原先没有的元素值为NULL。 如: @array=(1,2,3,4); $scalar=$array[0]; $array[3]=5;#now@arrayis(1,2,3,5) $scalar=$array[4];#now$scalar=null; $array[6]=17;#now@arrayis(1,2,3,5,"","",17) .数组间拷贝 @result=@original; .用数组给列表赋值 @list1=(2,3,4); @list2=(1,@list1,5);#@list2=(1,2,3,4,5) .数组对简单变量的赋值 (1)@array=(5,7,11); ($var1,$var2)=@array;#$var1=5,$var2=7,11被忽略 (2)@array=(5,7); ($var1,$var2,$var3)=@array;#$var1=5,$var2=7,$var3=""(null) .从标准输入(STDIN)给变量赋值 $var= @array= 2、字符串中的方括号和变量替换 "$var[0]"为数组@var的第一个元素。 "$var\[0]"将字符"["转义,等价于"$var"."[0]",$var被变量替换,[0]维持不变。 "${var}[0]"亦等价于"$var"."[0]"。 "$\{var}"那么取消了大括号的变量替换功能,包括文字: ${var}. 3、列表范围: (1..10)=(1,2,3,4,5,6,7,8,9,10) (2,5..7,11)=(2,5,6,7,11) (3..3)=(3) .用于实数 (2.1..5.3)=(2.1,3.1,4.1,5.1) (4.5..1.6)=() .用于字符串 ("aaa".."aad")=("aaa","aab","aac","aad") @day_of_month=("01".."31") .可包括变量或表达式 ($var1..$var2+5) .小技术: $fred="Fred"; print(("Hello,".$fred."! \n")x2); 其结果为: Hello,Fred! Hello,Fred! 4、数组的输出: (1)@array=(1,2,3); print(@array,"\n"); 结果为: 123 (2)@array=(1,2,3); print("@array\n"); 结果为: 123 5、列表/数组的长度 当数组变量出此刻预期简单变量显现的地址,那么PERL说明器取其长度。 @array=(1,2,3); $scalar=@array;#$scalar=3,即@array的长度 ($scalar)=@array;#$scalar=1,即@array第一个元素的值 注: 以数组的长度为循环次数可如下编程: $count=1; while($count<=@array){ print("element$count: $array[$count-1]\n"); $count++; } 6、子数组 @array=(1,2,3,4,5); @subarray=@array[0,1];#@subarray=(1,2) @subarray2=@array[1..3];#@subarray2=(2,3,4) @array[0,1]=("string",46);#@array=("string",46,3,4,5)now @array[0..3]=(11,22,33,44);#@array=(11,22,33,44,5)now @array[1,2,3]=@array[3,2,4];#@array=(11,44,33,5,5)now @array[0..2]=@array[3,4];#@array=(5,5,"",5,5)now 能够用子数组形式来互换元素: @array[1,2]=@array[2,1]; 7、有关数组的库函数 (1)sort--按字符顺序排序 @array=("this","is","a","test"); @array2=sort(@array);#@array2=("a","is","test","this") @array=(70,100,8); @array=sort(@array);#@array=(100,70,8)now (2)reverse--反转数组 @array2=reverse(@array); @array2=reversesort(@array); (3)chop--数组去尾 chop的意义是去掉STDIN(键盘)输入字符串时最后一个字符--换行符。 而若是它作用到数组上,那么将数组中每一个元素都做如此处置。 @list=("rabbit","12345","quartz"); chop(@list);#@list=("rabbi","1234","quart")now (4)join/split--连接/拆分 join的第一个参数是连接所用的中间字符,其余那么为待连接的字符数组。 $string=join("","this","is","a","string");#结果为"thisisastring" @list=("words","and"); $string=join(": : ",@list,"colons");#结果为"words: : and: : colons" @array=split(/: : /,$string);#@array=("words","and","colons")now未完待续本教程为flamephoenix翻译整理本教程欢迎下载、转载和链接,转载必需保留本说明并维持文章完整。 本教程不许诺以任何形式用于商业用途。 对本教程有何疑问、更正或建议请告知我,谢谢。 第五章文件读写 一打开、关闭文件 二 读文件三写文件四判定文件状态 五命令行参数 六打开管道 一、打开、关闭文件 语法为open(filevar,filename),其中filevar为文件句柄,或说是程序顶用来代表某文件的代号,filename为文件名,其途径可为相对途径,亦可为绝对途径。 open(FILE1,"file1"); open(FILE1,"/u/jqpublic/file1"); 打开文件时必需决定访问模式,在PERL中有三种访问模式: 读、写和添加。 后两种模式的区别在于写模式将原文件覆盖,原有内容丢失,形式为: open(outfile,">outfile");而添加模式那么在原文件的末尾处继续添加内容,形式为: open(appendfile,">>appendfile")。 要注意的是,不能对文件同时进行读和写/添加操作。 open的返回值用来确信打开文件的操作是不是成功,当其成功时返回非零值,失败时返回零,因此能够如下判定: if(open(M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- perl 编写 genesis 脚本