2024年10月perl编程实例pdf(如何使用Perl语言在windows下编写图形化窗口程序啊,求大师,最好给个例子瞅瞅)

 更新时间:2024-10-12

  ⑴perl编程实例pdf(如何使用Perl语言在windows下编写图形化窗口程序啊,求大师,最好给个例子瞅瞅

  ⑵如何使用Perl语言在windows下编写图形化窗口程序啊,求大师,最好给个例子瞅瞅

  ⑶perl的图形有两种玩法,Tk和Tkx.Tk是纯Perl的,但能用的widget(即那些button,menu,scrollbar...)比较少;Tkx则需要你先装有Tcl/Tk,但能用的widget比较多.一个最简单的例子就是useTk;#导入tk模组usestrict;my$mw=MainWindow-》new;#创建窗口my$labelObj=$mw-》Label(-text=》’Hello,world!’);#创建一个label物件$labelObj-》pack;#pack()是将物件程现的方法,你再翻翻书,还有grid()和place()的风格$mw-》Button(-text=》’Quit’,-mand=》sub{exit},)-》pack;MainLoop;#每个tk程序都要等到呼叫MainLoop才会出现.最後,你还得知道一个(差不多)每个物件都会的方法,叫configure,你会以此对物件进行重新定义,或附加设定

  ⑷楼真是的,人家还没入门,你直接整个文件操作干嘛?什么是Perl?Perl是一种最初开发用于文本操作的编程语言。现在它能应用于广泛的任务,包括系统管理、web开发、网络编程、GUI开发和更多的普通用途。这个语言以实用性为目标(易用、高效、完整宁愿失去美丽(小巧、优雅、迷你。它使用方便,且支持面向过程和面向对象编程,内置强大的文本处理支持,并有世界上最令人印象深刻的第三方模块的集中营。运行Perl程序在Unix命令行运行Perl程序:perlprogname.pl另一种方法是,把这个放到你的脚本第一行:#!/usr/bin/envperl然后用/path/to/script.pl运行。当然,首先得让它能执行,你得chmodscript.pl(Unix下。(这里的第一行假设你有env程序。你也可以直接把你的perl解释器的路径直接放到第一行,比如#!/usr/bin/perl安全保障默认情况下,Perl非常随意。为了使它更强健建议每个程序由下列行开始:.#!/usr/bin/perl.usestrict;.usewarnings;附加的两行从perl中捕获您的代码中的各种常见的问题。它们检查不同的事情,所以你需要两个都加上。一个潜在的问题通过usestrict;捕获,一旦它捕获到问题,会马上让你的程序停止运行。当然使用usewarnings;时,仅仅出现警告(就好像命令行的-w选项并不会停止程序。基本语法概述一个Perl脚本或程序包含一条或多条语句。这些语句只需直接写在脚本中,而不需要像main()这样的东西作为程序入口。Perl语句以分别结束:print“Hello,world“;以星号(#开始的语句是注释:#Thisisament(这是一条注释空白字符会被Perl忽略:.print.“Hello,world“.;……引号里的字符串除外:.#thiswouldprintwithalinebreakinthemiddle.print“Hello.world“;字符串使用双引号或单引号:.print“Hello,world“;.print’Hello,world’;然而,只有双引号会“插入”变量值和像换行符(

  ⑸这样的特殊字符(转义字符:.print“Hello,$name

  ⑹“;#worksfine.print’Hello,$name

  ⑺’;#prints$name

  ⑻literally数字不需要引号:print;你可以使用或省略括号来传递函数的参数。它们只是在偶尔要改变或明确优先级的时候必须使用。.print(“Hello,world

  ⑼“);.print“Hello,world

  ⑽“;Perl变量类型Perl有种主要的变量类型:标量(scalars、数组(arrays和哈希(hashes。*标量(Scalars一个标量表示只有一个值:.my$animal=“camel“;.my$answer=;标量的值可以是字符串、整数或浮点数,并且Perl会在需要的时候自动转换。你不需要预先声明你的变量类型,但是你需要在第一次使用它们的时候,使用my来声明它们。(这是usestrict;所要求的标量可以用不用的方式使用:.print$animal;.print“Theanimalis$animal

  ⑾“;.print“Thesquareof$answeris“,$answer*$answer,“

  ⑿“;有大量的“魔法”标量的名称看上去像标点或线路噪音。这些特殊的变量用于各种目的。现在你只要知道其中一个,这就是“默认变量”$_。它被许多Perl的函数用作默认的参数,并且它被隐式设置到某些循环结构中。print;#printscontentsof$_bydefault(默认打印$_的内容*数组(Arrays数组用于表示一些值的列表:.myanimals=(“camel“,“llama“,“owl“);.mynumbers=(,,);.mymixed=(“camel“,,.);特殊变量$#array将返回数组最后一个元素的索引:print$mixed;#lastelement,prints.你可能想使用$#array+来得到这个数组的元素个数。别急,这很容易。在Perl预想找到一个标量值的时候(“在标量上下文”,使用array会得到数组的元素个数:(译注:“上下文”是Perl很重要的特性之一,请查阅相关文档或在无忧Perl搜索相关内容if(animals《){...}#译注:当animals数组的元素个数少于个的时候当我们从数组获得元素值的时候,需要使用$,因为我们只要获取数组里的一个值;你请求一个标量,然后会获得一个标量。从数组里获取多个值:(译注:获取多个值,使用,因为我们要获取数组里的几个值(列表。.animals;#gives(“camel“,“llama“);.animals;#gives(“camel“,“llama“,“owl“);.animals;#givesallexceptthefirstelement这叫“数组切片”。你可以在列表里干些有意义的事情:.mysorted=sortanimals;.mybackwards=reversenumbers;有两个特殊的数组,一个是命令行传到你脚本的参数ARGV;另一个是传递给子程序的参数_。*哈希哈希用来表示键/值对:.my%fruit_color=(“apple“,“red“,“banana“,“yellow“);你可以使用空白字符和=》操作符来美化上面的代码:.my%fruit_color=(.apple=》“red“,.banana=》“yellow“,.);获取哈希元素:.$fruit_color{“apple“};#gives“red“你可以通过keys()和values()来获取键列表和值列表。.myfruits=keys%fruit_colors;.mycolors=values%fruit_colors;哈希没有特定的内部排序,然而你可以对键进行排序来遍历它。和特殊的标量、数组一样,哈希也有特殊的。我们现在只要知道哈希%ENV包括所有环境变量。更复杂的数据类型可以使用引用来构造,允许你把列表和哈希放到另一个列表和哈希中。引用是一个标量值,它可以引用任何其它的Perl数据类型。通过把引用存储为数组或哈希的元素值,你可以轻松创建列表/哈希中的列表/哈希。以下示例演示了使用匿名哈希引用实现的两级哈希结构.my$variables={.scalar=》{.description=》“singleitem“,.sigil=》’$’,.},.array=》{.description=》“orderedlistofitems“,.sigil=》’’,.},.hash=》{.description=》“key/valuepairs“,.sigil=》’%’,.},.};..print“Scalarsbeginwitha$variables-》{’scalar’}-》{’sigil’}

  ⒀“;变量作用域上面所有的例子都使用这种语法:.my$var=“value“;实际上,my不是必须的。你可以省略:(译注:前提是,你没有使用“usestrict;”语句.$var=“value“;但是,上面的用法将创建一个全局变量,这是一个很差的编程实践。my创建一个词法作用域变量,这个变量只在定义它们的语句块中可见(比如一段包在大括号里的语句。.my$x=“foo“;.my$some_condition=;.if($some_condition){.my$y=“bar“;.print$x;#prints“foo“.print$y;#prints“bar“.}.print$x;#prints“foo“.print$y;#printsnothing;$yhasfallenoutofscope结合使用my和在Perl脚本开头使用usestrict,解释器将捕获常见的编程错误。比如,在上面的例子中,最后的print$y将引发一个编译时错误并阻止程序运行。强烈建议使用usestrict语句!条件和循环语句Perl有许多常用的条件和循环语句。Perl.甚至提供了分支语句(拼作given/when。条件可以是任何Perl表达式。比较和布尔条件语句中常用的逻辑运算符,请参阅有关信息的下一节中的运算符的列表。*if.if(condition){.....}elsif(othercondition){.....}else{.....}还有否定版本的:.unless(condition){.....}这个否定版比if(!condition)更易读。注意,大括号是必须的,即使代码块中只有一行。不过,这里有一个方法可以让你通过类似英语的语法来实现单行条件语句:.#thetraditionalway.if($zippy){.print“Yow!“;.}..#thePerlishpost-conditionway.print“Yow!“if$zippy;.print“Wehavenobananas“unless$bananas;*while.while(condition){.....}为了和unless同样的理由,也有一个否定版本:.until(condition){.....}你也可以在后置条件里使用while:print“LALALA

  ⒁“while;#loopsforever*for跟C语言一样:.for($i=;$i《=$max;$i++){.....}自然Perl提供了更友好的列表遍历循环foreach以后,C语言风格的for循环在Perl几乎不需要了。*foreach.foreach(array){.print“Thiselementis$_

  ⒂“;.}..print$listforeach..$max;..#youdon’thavetousethedefault$_either....foreachmy$key(keys%hash){.print“Thevalueof$keyis$hash{$key}

  ⒃“;.}内置操作符和函数Perl附带了各种各样的内置函数。我们已经看到的几个,包括print,sort和reverse。Perl常见操作符(运算符*算术.+加法.-减法.*乘法./除法*数字比较.==等于.!=不等于.《小于.》大于.《=小于等于.》=大于等于*字符串比较.eq等于.ne不等于.lt小于.gt大于.le小于等于.ge大于等于(为什么数字和字符串的比较运算符不同?因为我们没有不同的变量类型,并且Perl需要知道是以数字进行排序(小于还是以字母进行排序(在前面*逻辑.&&and和.||or或.!not否*混合.=赋值..字符串连接.x字符串乘法...范围(建立一个列表)一些操作符可以和=结合,像这样:.$a+=;#sameas$a=$a+.$a-=;#sameas$a=$a-.$a.=“

  ⒄“;#sameas$a=$a.“

  ⒅“;文件和I/O你可以使用open()函数来打开一个文件,用于输入或输出:.open(my$in,“《“,“input.txt“)ordie“Can’topeninput.txt:$!“;.open(my$out,“》“,“output.txt“)ordie“Can’topenoutput.txt:$!“;.open(my$log,“》》“,“my.log“)ordie“Can’topenmy.log:$!“;你可以使用《》操作符从打开的文件句柄中读数据。在标量上下文中,它从文件句柄中读取一行;在列表上下文中,它读取整个文件,并将每一行作为列表的元素。.my$line=《$in》;.mylines=《$in》;一次性把整个文件读完,叫做“啜食(slurping”。它能让人满意,但它可能是内存吞噬者。大多数文本文件处理可以通过Perl的循环结构,一行一行地完成。《》操作符经常出现在while循环里:.while(《$in》){#assignseachlineinturnto$_.print“Justreadinthisline:$_“;.}我们已经看到了如何使用print()在标准输出里打印。但是,print()还能通过第一个可选参数指定一个文件句柄来打印(译注:将内容输出到指定的文件句柄中,即写入到文件句柄相关联的文件中.printSTDERR“Thisisyourfinalwarning.

  ⒆“;.print$out$record;.print$log$logmessage;当你完成了对文件句柄的操作之后,你应该使用close()来关闭文件句柄。(老实说,如果你忘记关闭了,Perl会帮你处理。close$inordie“$in:$!“;正则表达式Perl对正则表达式的支持宽广而深入:*简单匹配.if(/foo/){...}#trueif$_contains“foo“.if($a=~/foo/){...}#trueif$acontains“foo“//匹配操作符(译注,完整的应该是:m//默认操作$_,或者使用=~来绑定其它变量进行操作。*简单置换.s/foo/bar/;#replacesfoowithbarin$_.$a=~s/foo/bar/;#replacesfoowithbarin$a.$a=~s/foo/bar/g;#replacesALLINSTANCESoffoowithbarin$a*更复杂的正则表达式你不仅能匹配固定的字符串。其实,你可以匹配任何你能想到的复杂正则表达式。..单个任意字符(默认不包含

  ⒇s一个空白字符(空格,tab,换行,...).S一个非空白字符.d一个数字(-).D一个非数字.w一个能组成单词的字符(a-z,A-Z,-,_).W一个不能组成单词的字符.匹配中括号内的任意一个字符.匹配除了中括号内列出的字符之外的任意一个字符.(foo|bar|baz)匹配foo或bar或baz..^匹配开头.$匹配结尾量词可用来指定数量:.*零个或任意多个.+至少一个.?零个或一个.{}个.{,}到个.{,}至少个一些简单的例子:./^d+/以一个或多个数字开头./^$/空的,没有任何东西./(ds){}/个带空白字符的数字.(比如““)./(a.)+/匹配最少一次,含有a和任意字符.(比如“abacadaf“)..#从STDIN循环读入,并打印出非空白行:.while(《》){.nextif/^$/;.print;.}*圆括号捕捉括号的另一个用法是分组。它可以用来捕捉最后使用的正则表达式匹配的结果。这些结果用$、$……表示。.#acheapandnastywaytobreakanemailaddressupintoparts..if($email=~/(+)(.+)/){.print“Usernameis$

  ⒈“;.print“Hostnameis$

  ⒉“;.}子程序写一个子程序是很容易的:.sublogger{.my$logmessage=shift;.openmy$logfile,“》》“,“my.log“ordie“Couldnotopenmy.log:$!“;.print$logfile$logmessage;.}现在我们可以像使用其它内置函数一样,使用该子程序了:.logger(“Wehavealoggersubroutine!“);什么是shift?传递给子程序的参数保存在_数组中。shift函数的默认参数是_。所以my$logmessage=shift;去掉第一个参数,并将其赋值给$logmessage。可以通过别的方法操作_:.my($logmessage,$priority)=_;#mon(通用.my$logmessage=$_;#unmon,andugly(不通过,并且很丑陋子程序可以返回值:#subsquare{#my$num=shift;#my$result=$num*$num;#return$result;#}然后像这样使用它:.$sq=square();Perl面向对象Perl面向对象相对比较简单,这是实现使用引用什么样的对象知道自己是在Perl的概念为基础的封装。刚开始进行Perl编程,你最常使用的Perl面向对象将是使用第三方模块,参见下文。使用Perl模块Perl模块提供了一系列的功能,可帮助您避免重复劳动,它们可以通过CPAN(下载。许多流行的模块都已经包含在了Perl发行包中。本文由无忧Perl(翻译,转载请注明本文链接:水平有限,错误难免,欢迎指正,并以原文为准。原文地址:希望对你有用

  ⒊chomp($str=《STDIN》);

  ⒋myarray=split//,$str;

  ⒌my$mx=$array;

  ⒍formy$e(array){$mx=$eif($e》$mx);}

  ⒎print“最大值为$mx“;

  ⒏chomp($str=《STDIN》);

  ⒐myarray=split//,$str;

  ⒑mysorted_num=sort{$a《=》$b}array;

  ⒒my$string=join(“,“,sorted_num);

  ⒓print“排序后的数列为:$string“;

  ⒔chomp($str=《STDIN》);

  ⒕myarray=split//,$str;

  ⒖myuniq=grep{++$ha{$_}《}array;

  ⒗my$size=array;

  ⒘my$n;my$foundno;my$regex;my$freq;

  ⒙print“氨基酸 频数 频率

  ⒚for($n=;$n《uniq;$n++){

  ⒛$regex=uniq;

  $foundno=;

  $foundno++while($str=~m/$regex/g);

  $freq=$foundno*/$size;

  print“$regex $foundno $freq%

  大家推荐几本PERL入门教程![在网上下载或电子书]

  《Perl语言入门》,去下载pdf看就行,看完了可以看高端一点的黑豹书。perl的话我也是刚用,主要用于软件测试和一些简单的即用工具软件的编写吧。编程都是相通的,你之前学过其他语言更好,没学过也无所谓,因为perl真的比较简单。补充一下:在全世界范围内,O’’Reilly的《Perl语言入门》(“小骆驼书”、《Perl语言编程》(“骆驼书”《Perl教程(Win版》(“蜥蜴书”和《高级Perl编程》(“黑豹书”等被Perl程序员们当作学习Perl必读的经典系列图书.

  perl语言的(关于循环

  我们将从一个最简单的小程序开始,它的功能是从键盘输入字符,然后将其送到控制台。采用perl语言实现,你可以会这样写:while($line=){print$line;}一开始这一程序已十分简洁,但是它的每条语句是什么意思呢?简单地说,是一个专用的文件句柄,在本例中它属于标准输入缓存(称为STDIN),通常是连接到键盘。每次我们将的值赋给变量$line时,即为将STDIN缓存中的首行取出,然后放入$line。当到达缓存最后一行时,就会取出while语句判断条件为假的(EOF)文件结束标识符。程序的其它部分很简单可以这样解释。现在我们已经将输入信息放入$line变量,接着我们就可以用print函数将其打印到屏幕。或者更准确地说,打印到通常连接显示器的标准输入缓存。标准输入和输出缓存都可以重定向,例如可重定向到保存程序结果的某个文件中,如果是在处理文本,那么通常可以认为这与键盘及显示器是等价的。你可能会认为这一程序已经是最短的了,但是通过使用perl的特殊变量,它还可以更短。默认数据变量:$_Perl有很多特殊变量,它们在程序运行过程中被自动分配,可用于访问程序本身的一些信息,诸如程序名或者进程ID号、命令行参数、或最后一个表达式的运算结果。这些变量中最经常使用也可能是最有用的是$_这一默认变量。如果你在程序中未指明,默认变量作为某个未分配的功能变量,用于保存一些perl结构体和函数的运算结果。在你熟悉perl之前这可能听起来令人费解,但是它的功能的确很强大。我们可以用变量$_来取消程序中的$line变量:while(){print$_;}这一程序和前一个是等价的,即使在测试条件while语句中我们仅使用到一个文件句柄。程序将输入存入到默认变量,所以当我们要输出时就可以用变量$_访问输入的信息。但是我们还可以把程序变得更短,记住我说过,$_是一个用于未定义的实现某个功能的默认变量,这样打印是它其中的一个功能,所以我们现在可以把程序这样来写:while(){print;}现在我们得到实现同样功能的程序,但是该程序消除了所有外部变量。因为我们仅仅是将STDIN和STDOUT连在一起。如果我们能够去掉while循环则会更好,这一循环无非是在重复的将数据从一个缓存移到另一个。这一过程也可以用下面的语句实现:print;这个程序的工作过程有点复杂。当采用$_实现打印时,我们是将一个变量放在另一个称为标量变量的情况下。简单地说就是它将这一变量看作一个对象,比如可以是一个数或者一个字符,但并不是一个集合。打印函数也可以采用在一组标量的方式,即将变量看作一系列对象,当我们使用打印函数时,它将轮流打印每一个。当我们使用句柄进行打印时,它将把标准输入看作一个字符序列,依次打印。这和while循环实现一样的功能。这可能是一个极端的例子,但是使用一些perl编程技巧,可以将我们的程序长度减少一半。

  在perl里面怎么调用一个外部PDF

  openFH是Perl打开文件的格式而已,FH是FileHandle名称。$all是Perl一个变量而已,$all=《FH》意思是循环的时候文章每一行都依次赋值给这个变量SampleFile.TXT就是你要打开的文件名字,需要加路径,如果文件不在当前目录下

您可能感兴趣的文章:

相关文章