perl编写genesis脚本

合集下载

Genesis2000脚本命令大全

Genesis2000脚本命令大全

Genesis2000脚本命令大全1.switch的用法,注意每一个case必须要以breaksw结尾否则会继续执行下一个case的命令(1)另外,$<的意思是取得使用者的stand input(2)echo若加上-n的选项,则游标会停留在该行最后echo-n"Input one color:"set STOPLIGHT=$<switch($STOPLIGHT)case red:echo"red"breakswcase orange:echo"orange"breakswcase green:echo"green"breakswdefault:echo"you input$STOPLIGHT"endsw--------------------------------------------------------------------2.利用set来取得变数,set ABC="I am ABC"也可以利用`command`来取得命令且外,case也可以用万用字元*来代替set VER=`uname-r`switch($VER)case5.5:echo"run the setup of$VER"breakswcase5.3:echo"run the setup of$VER"breakswcase5.*:echo"like5.x"breakswcase4.*:echo"like4.x"breakswdefault:echo"no idea"endsw--------------------------------------------------------------------3.if的语法,比较数字set n1=1set n2=2if($n1==$n2)thenecho"$n1Equal$n2"elseecho"$n1Not Equal$n2"endif--------------------------------------------------------------------4.if的语法,比较字串set n1=abcdefset n2=abcdeif($n1==$n2)thenecho"$n1Equal$n2"elseecho"$n1Not Equal$n2"--------------------------------------------------------------------5.if的语法,比较相似的字串set n1=abcdefset n2=abcdeif($n1=~$n2)thenecho"$n1Like$n2"elseecho"$n1Not Like$n2"endif--------------------------------------------------------------------6.if的语法,比较数字的大小set n1=1set n2=2if($n1>$n2)thenecho"$n1>$n2"echo"$n1<$n2"endif--------------------------------------------------------------------7.每分钟执行一次的程式#mm等于当天时间的【分钟】数set mm=`date|cut-d''-f4|cut-d:-f2`if(-r$0.out)thenrm$0.outtouch$0.outelsetouch$0.outendifwhile($mm<=16)set mm=`date|cut-d''-f4|cut-d:-f2`echo"$mm now is`date`"sleep60#echo"$mm now is`date`">>$0.outendecho"Over">>$0.out--------------------------------------------------------------------8.一个回圈的范例,并且利用expr去作加的动作回圈的语法如下:foreach number(123)echo$numberendset counter=0while($counter<=10)echo"sleeping for5seconds"sleep5counter=`expr$counter+1`end--------------------------------------------------------------------9.设定一个用当天月份与日期作为档案名称的程式如今天是10/02,则$prefix会等于该程式+1002date.csh1002set prefix=`basename$0``date'+%m%d'`echo$0echo$prefix--------------------------------------------------------------------10.移除在foreach回圈内指定的档案内的font字串foreach file([b,e,g,h,s]*.html)echo-n"Processing$file,remove the line number`grep-n font $file`"#$log表示这个$file有几个font字串set log=`grep-c font$file`if($log=='0')thenecho",pass$file"else#先找出该档案的第一次出现font的行数,如果3,则$cmd=3dset cmd=`grep-n font$file|cut-d:-f1|head-1`d#利用sed去执行删除的动作,并把结果输出到${file}1sed$cmd$file>${file}1#如果${file}1没有资料,则passingif(-z${file}1)thenecho",${file}1is zero"elsecp${file}1$filerm{$file}1echo",$file remove ok"endifendifend#后来看过sed的更进一步用法,发现先前写的太笨了,试试这个#sed/font/d$file>${file}1#一次OK,我真是大笨蛋--------------------------------------------------------------------11.功能:将指定的档案中,出现第一次【回】的那一行,加上<ti tle>xxxx</title>foreach file(sky*.html)set filetitle=ftitle#主要部份为sed部份s/^*//表示将该行第一个字元前的空白删除echo"<title>`grep回$file|head-1|sed-e's/^*//'`</tit le>">$ftitle#将刚刚那一行,再插回去head-1$file>${file}headsed1d$file>${file}1cat$ftitle>>${file}headcat${file}1>>${file}headcp${file}head$filerm${file}1rm$ftitlerm${file}headecho"$file ok"end--------------------------------------------------------------------12.一个实际建立一个ftp server的程式里面包括许多应用,相当有参考价值(未完成)set path=(/usr/bin/usr/sbin)#set true=`grep-c ftp/etc/passwd`if($true==0)thenecho"no ftp user in your system"echo-n"do you want to create the ftp user?"set answer=$<if($answer=='y'||$answer=='Y')thenset maxid=`sort/etc/passwd|tail-1|cut-d:-f3`echo$maxidset newid=`expr$maxid+1`echo$newidecho"/usr/sbin/useradd-d/home1/ftp-u$newid-s/etc/false ftp"endifelseecho"Good.Your system already has the ftp user."set ftphome=`grep ftp:/etc/passwd|cut-d:-f6`echo$ftphomeendifif(-z$ftphome)thenecho"ftphome must be non-null"exit2endifif($ftphome=="/usr"||$ftphome=="/")then echo"ftphome can't be/or/usr"exit2endif#create the ftp home directoryif(!-d$ftphome)thenecho"mkdir$ftphome"endifecho"Setting up the ftphome for SunOS`uname-r`"if(!-d$ftphome)thenecho"mkdir-p$ftphome/usr/bin"endifcp/bin/ls$ftphome/usr/binchmod111$ftphome/usr/bin/lschown root$ftphome/usr/binchmod555$ftphome/usr/binif(-r$ftphome/bin)thenmv-f$ftphome/bin$ftphome/Obinendifln-s usr/bin$ftphome--------------------------------------------------------------------13.取得该使用者的UIDif($#argv==0)thenecho"$0usage:$1username"exit2endifset uid=`grep$1/etc/passwd|cut-d:-f3`echo$uid--------------------------------------------------------------------14.将指定档案内的html取代成htmforeach file(*.html)echo"Processing$file..."sed s/html/htm/$file>${file}1cp${file}1$filerm${file}1end--------------------------------------------------------------------15.一个简简单单的范例,看看就好#!/bin/csh-f echo.................echo WELCOME to\*TAPE COPY\* echo.................echo Enter your name:#$<can read from stand inputset name=$<echo""echo Hi$name\!set D=`date`echo Today\'s date is$D[1]$D[2]$D[3]if($D[1]==Mon)thenecho-------------------------------------------------------------echo Today is$D[1]day$name,it\'s time to copy your director ys\!echo-------------------------------------------------------------elseecho-------------------------------------------------------------echo Today is$D[1]day$name,no tape copies today\!echo-------------------------------------------------------------endif--------------------------------------------------------------------16.一个finger的程式set FINGER="/usr/ucb/finger"if(-x$FINGER)thenif($#argv==0)thencat<<TAG---------------------------------Hahahah....---------------------------------TAGelse$FINGER"$*"endifelseecho"Cannot find finger on this system."endif--------------------------------------------------------------------17.取得变数的方法set W=`who-r`echo$W[9]--------------------------------------------------------------------18.更改档案名称,将*.html-->*.htm#rename*.html to*.htmecho-n"This will change*.html to*.htm.Can I continue?(y/n): "set input=$<if($input!="y"&&$input!="Y")thenecho"Ok.Quit..."exit2endifforeach file(*.html)echo"Processing$file to`basename$file.html`.htm"mv$file`basename$file.html`.htmend--------------------------------------------------------------------19.更改档案名称,将*.htm-->*.htmlecho-n"This will change*.htm to*.html.Can I continue?(y/n): "set input=$<if($input!="y"&&$input!="Y")thenecho"Ok.Quit..."exit2endif#rename*.htm to*.htmlforeach file(*.htm)echo"Processing$file to`basename$file.htm`.html"mv$file`basename$file.htm`.htmlend--------------------------------------------------------------------20.将大写的档名改成小写的档名tr string1string2会将standard input的字串,所对应到的string1,都以string2取代foreach file(*)mv$file`echo$file|tr'[A-Z]''[a-z]'`end--------------------------------------------------------------------21.将小写的档名改成大写的档名foreach file(*)mv$file`echo$file|tr'[a-z]''[A-Z]'`end。

genesis脚本编写10

genesis脚本编写10

第十章 awk 工具编程 我们在genesis 编程中,awk 工具会经常用到,awk 工具很强大,它不仅可以从一个很大的文本文件中抽取数据包,还可以进行算术运算、比较运算等等很多功能,应该说awk 是一种比较完整的编程语言,本章我们就一一介绍这个较为强大的工具。

刘才林数字签名人 刘才林DN :cn=刘才林,c=CN-中国,o=上海桌凯,ou=工程,email=hillohowareyougo@ 原因:我是该文档的作者日期:2008.07.03 10:07:27 +08'00'10.1:awk简介:awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。

数据可以来自标准输入、一个或多个文件,或其它命令的输出。

它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。

它可以在命令行中使用,但更多是作为脚本来使用。

awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。

如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。

awk分别代表其作者姓氏的第一个字母。

因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。

Awk后来在Linux系统上发展为gawk,在unix系统上发展为nawk,而在genesis2000编程的windows系统中,我们要应用awk95,它们之间也有一些区别,如果你编写的genesis2000程序要应用于多个系统,请注意您的awk程序是否能在各个系统中运行,并且定义不同系统为不同的awk,因为最早的awk很多功能都不能实现。

下面的讲解以gawk为主,但我们简称为awk,请大家不要混淆概念。

10.2:awk命令格式和选项:10.2.1:awk的语法有两种形式:awk [options] 'script' var=value file(s)awk [options] -f scriptfile var=value file(s)10.2.2:awk的常用选项:●–F fs:使用fs作为输入记录的字符分隔符,如果省略该选项,awk使用环境变量IFS的值。

genesis2024脚本编程培训教程

genesis2024脚本编程培训教程
不同的数据类型具有不同的存储空间和操作方式,需要根据实际需求选 择合适的数据类型。
变量、数据类型与运算符
运算符 运算符用于执行各种算术和逻辑操作,如加法、减法、乘法、除法、比较等。
Genesis2024提供了丰富的运算符,可以满足各种复杂的计算需求。
03
流程控制语句与函数
条件判断语句
01
if语句
善于利用Genesis2024提供的调试工具 ,定位和解决代码中的错误。
变量、数据类型与运算符
变量
变量是用于存储数据的标识符,可以根据需要定义不同类型的变量。
在Genesis2024中,变量命名应遵循一定的规则,如使用字母、数字和下划线组合 ,且不能以数字开头。
变量、数据类型与运算符
数据类型
Genesis2024支持多种数据类型,包括整数、浮点数、字符串、布尔值 等。
拓展应用:结合其他工具提升效率
与版本控制工具集成
介绍如何将脚本编程与版本控制工具(如Git)结合使用,实现代码的版本管理和协作开 发。
与持续集成/持续部署工具集成
讲解如何将脚本编程与持续集成/持续部署工具(如Jenkins)结合使用,实现自动化构建 、测试和部署等。
与自动化运维工具集成
探讨如何将脚本编程与自动化运维工具(如Ansible)结合使用,实现系统的自动化配置 、管理和监控等。
脚本。
编写脚本文件
使用文本编辑器编写脚本文件,并 保存为以解释器对应的扩展名结尾 的文件,如.sh、.py、.pl或.rb等。
运行脚本
在命令行中通过解释器运行脚本文 件,如`bash script.sh`、`python script.py`、`perl script.pl`或`ruby script.rb`等。

genesis2000脚本(外挂接口)

genesis2000脚本(外挂接口)
专为 PCB/FPC 量身定做的外挂系统!
开发语言: 以 Windows 系统为背景,Genflex Genesis2000 为载体,采用 Perl5.14 + Tkx 结合 PCB 工程 CAM 设计实际情况开发而成。 服务宗旨: 为 CAM 系统维护、脚本开发人员度身配置一套外挂系统环境,让您的精力更专注于 CAM 制作自动化功能的实现。 项目优势: 1、不工作时可最小化至系统托盘,或靠边隐藏。 2、无需绑定可自动获取当前工作 JOB、STEP。 3、外部执行方式操作 Genesis LMC,它是单独运行,不影响 Genesis 任何操作 4、完全用户自定义、自行配置厂内 CAM 作业流程,可以关联先前已有的所有程序, 在整个软件环境里可自己开发其他新的程序。 5、Script 运行结束后的状态图标会根据 script 运行结果而改变以此提醒用户。 6、实现 274X、Tgz、钻孔、Dxf 文件鼠标一键拖放读取
根据公司 CAM 实际情况将设计标 准化操作流程步骤配置到系统中, 并可实现流程步骤的动态调整
专为 PCB/FPC 量身定做的外挂系统!
个性设置: 可根据个人爱好在界面中设置不同的背景图
-----------------------------------------------------谢谢您的关注! -----------------------
《可自定义一套 CAM Guide 流程》 CAM Guide 是一套 CAM 自动化作 业系统工具,它依据不同 PCB 厂统 一的 CAM 作业流程定制的一个超强 大向导器,可以指导和帮助每一位 CAM 技术人员来完成一个料号的制 作。它又像是一个管理工具,它能够 有效记录每一个操作的结果和时间, 方便以后问题追踪和查询。

第1章genesis2000 自动化程序编写和运行环境

第1章genesis2000 自动化程序编写和运行环境

本章内容主要介绍genesis自动化程序编写运行环境:首先对genesis2000软件进行简单的介绍;而后介绍genesis2000自动化程序的开发方式和开发语言;最后介绍自动化程序在软件中的接口。

1.1、 genesis2000软件简介:Genesis2000软件是由Orbotech与Valor的合资公司—Frontline公司开发的CAM系统,其目的是为实工程现制前自动化,为CAM处理提供最佳解决方案,由于该软件拥有很强大的功能,很多PCB生产公司都已使用它为CAM 制前服务,笔者认为该软件有以下几方面的优点:1)令人喜欢的操作界面genesis2000软件界面设计人性化,操作简单,易学。

2)用ODB++格式,使用ODB++格式有以下三个优点:(1):使设计和制造之间数据交换最优化。

(2):目前唯一性的可扩充的结构。

(3):更精确的数据描述。

3)强大的操作辅助指令genesis2000软件的操作辅助指令可以简化很多复杂的工作,很简单的操作就可以达到我们想要的目的。

4)大的分析和优化功能genesis2000软件的Analysis和DFM功能在精密度要求越来越高的PCB行业显得极为重要,它自动进行精密的分析和优化,而用手动操作根本不可能实现。

5)自动化程序开发genesis2000软件的自动化程序可以让我们任何有规律的操作,有迹可寻的设定变成自动化,大大节省制作时间和减少人为误操作。

6)不断的围绕用户升级genesis2000软件不断围绕用户的需求进行开发新的实用的功能,笔者在使用的几年间,genesis2000开发了很多新的功能。

1.2:genesis2000软件自动化程序开发方式和语言:1.2.1genesis2000软件自动化程序的编写方式可分为以下三种:1)scripts2)hooks3)forms and flows1.2.2genesis2000软件自动化程序编写语言genesis2000软件自动化程序编写语言可以用多种语言进行实现:如SH、CSH、BSH、KSH、TCL/TK、PERL/TK,等等,本书主要介绍CSH,和PERL/TK两种比较常用的编写语言。

Genesis2000脚本编写常用命令剖析

Genesis2000脚本编写常用命令剖析

1. switch 的用法,注意每一个case 必须要以breaksw 结尾 否则会继续执行下一个case 的命令(1) 另外,$< 的意思是取得使用者的stand input(2) echo 若加上-n 的选项,则游标会停留在该行最后echo -n "Input one color: "set STOPLIGHT = $<switch ($STOPLIGHT)case red:echo "red"breakswcase orange:echo "orange"breakswcase green:echo "green"breakswdefault:echo "you input $STOPLIGHT"endsw--------------------------------------------------------------------2. 利用set 来取得变数,set ABC = "I am ABC"也可以利用`command` 来取得命令且外,case 也可以用万用字元* 来代替set VER = `uname -r`switch ($VER)case 5.5:echo "run the setup of $VER"breakswcase 5.3:echo "run the setup of $VER"breakswcase 5.*:echo "like 5.x"breakswcase 4.*:echo "like 4.x"breakswdefault:echo "no idea"endsw--------------------------------------------------------------------3. if 的语法,比较数字set n1 = 1set n2 = 2if ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif--------------------------------------------------------------------4. if 的语法,比较字串set n1 = abcdefset n2 = abcdeif ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif--------------------------------------------------------------------5. if 的语法,比较相似的字串set n1 = abcdefset n2 = abcdeif ($n1 =~ $n2) thenecho "$n1 Like $n2"elseecho "$n1 Not Like $n2"endif--------------------------------------------------------------------6. if 的语法,比较数字的大小set n1 = 1set n2 = 2if ($n1 > $n2) thenecho "$n1 > $n2"elseendif--------------------------------------------------------------------7. 每分钟执行一次的程式# mm 等于当天时间的【分钟】数set mm = `date | cut -d' ' -f4 | cut -d: -f2`if ( -r $0.out ) thenrm $0.outtouch $0.outelsetouch $0.outendifwhile ( $mm <= 16 )set mm = `date | cut -d' ' -f4 | cut -d: -f2`echo "$mm now is `date`"sleep 60#echo "$mm now is `date`" >> $0.outendecho "Over" >> $0.out--------------------------------------------------------------------8. 一个回圈的范例,并且利用expr 去作加的动作回圈的语法如下:foreach number (1 2 3)echo $numberendset counter = 0while ($counter <= 10)echo "sleeping for 5 seconds"sleep 5counter = `expr $counter + 1 `end--------------------------------------------------------------------9. 设定一个用当天月份与日期作为档案名称的程式如今天是10/02 , 则$prefix 会等于该程式+ 1002set prefix = `basename $0``date '+ %m%d'`echo $0echo $prefix--------------------------------------------------------------------10. 移除在foreach 回圈内指定的档案内的font 字串foreach file ([b,e,g,h,s]*.html)echo -n "Processing $file, remove the line number `grep -n font $file`"# $log 表示这个$file 有几个font 字串set log = `grep -c font $file`if ( $log == '0' ) thenecho ", pass $file"else# 先找出该档案的第一次出现font 的行数,如果3,则$cmd = 3dset cmd = `grep -n font $file | cut -d: -f1 | head -1`d# 利用sed 去执行删除的动作,并把结果输出到${file}1sed $cmd $file > ${file}1# 如果${file}1 没有资料,则passingif ( -z ${file}1 ) thenecho " , ${file}1 is zero"elsecp ${file}1 $filerm {$file}1echo " , $file remove ok"endifendifend# 后来看过sed 的更进一步用法,发现先前写的太笨了,试试这个# sed /font/d $file > ${file}1# 一次OK, 我真是大笨蛋--------------------------------------------------------------------11. 功能:将指定的档案中,出现第一次【回】的那一行,加上<title> xxxx </title>foreach file (sky*.html)set filetitle = ftitle# 主要部份为sed 部份 s/^ *// 表示将该行第一个字元前的空白删除echo "<title>`grep 回$file | head -1 | sed -e 's/^ *//'`</title>" > $ftitle# 将刚刚那一行,再插回去head -1 $file > ${file}headsed 1d $file > ${file}1cat $ftitle >> ${file}headcat ${file}1 >> ${file}headcp ${file}head $filerm ${file}1rm $ftitlerm ${file}headecho "$file ok"end--------------------------------------------------------------------12. 一个实际建立一个ftp server 的程式 里面包括许多应用,相当有参考价值( 未完成)set path = ( /usr/bin /usr/sbin )#set true = `grep -c ftp /etc/passwd`if ( $true == 0 ) thenecho "no ftp user in your system"echo -n "do you want to create the ftp user? "set answer = $<if ($answer == 'y' || $answer == 'Y') thenset maxid = `sort /etc/passwd | tail -1 | cut -d: -f3`echo $maxidset newid = `expr $maxid + 1`echo $newidecho "/usr/sbin/useradd -d /home1/ftp -u $newid -s /etc/false ftp"endifelseecho "Good. Your system already has the ftp user. "set ftphome = `grep ftp: /etc/passwd | cut -d: -f6`echo $ftphomeendifif ( -z $ftphome ) thenecho "ftphome must be non-null"exit 2endifif ( $ftphome == "/usr" || $ftphome == "/" ) thenecho "ftphome can't be / or /usr"exit 2endif# create the ftp home directoryif ( ! -d $ftphome ) thenecho "mkdir $ftphome"endifecho "Setting up the ftphome for SunOS `uname -r`"if ( ! -d $ftphome ) thenecho "mkdir -p $ftphome/usr/bin"endifcp /bin/ls $ftphome/usr/binchmod 111 $ftphome/usr/bin/lschown root $ftphome/usr/binchmod 555 $ftphome/usr/binif ( -r $ftphome/bin ) thenmv -f $ftphome/bin $ftphome/Obinendifln -s usr/bin $ftphome--------------------------------------------------------------------13. 取得该使用者的UIDif ( $#argv == 0 ) thenecho "$0 usage: $1 username"exit 2endifset uid = `grep $1 /etc/passwd | cut -d: -f3`echo $uid--------------------------------------------------------------------14. 将指定档案内的html 取代成htmforeach file ( *.html )echo "Processing $file ..."sed s/html/htm/ $file > ${file}1cp ${file}1 $filerm ${file}1end--------------------------------------------------------------------15. 一个简简单单的范例,看看就好#!/bin/csh -fecho .................echo WELCOME to \* TAPE COPY \*echo .................echo Enter your name:# $< can read from stand inputset name = $<echo " "echo Hi $name \!set D = `date`echo Today\'s date is $D[1] $D[2] $D[3]if ($D[1] == Mon) thenecho -------------------------------------------------------------echo Today is $D[1]day $name, it\'s time to copy your directorys\! echo -------------------------------------------------------------elseecho -------------------------------------------------------------echo Today is $D[1]day $name, no tape copies today\!echo -------------------------------------------------------------endif--------------------------------------------------------------------16. 一个finger 的程式set FINGER = "/usr/ucb/finger"if ( -x $FINGER ) thenif ( $#argv == 0 ) thencat << TAG---------------------------------Hahahah ....---------------------------------TAGelse$FINGER "$*"endifelseecho "Cannot find finger on this system."endif--------------------------------------------------------------------17. 取得变数的方法set W = `who -r`echo $W[9]--------------------------------------------------------------------18. 更改档案名称,将*.html --> *.htm# rename *.html to *.htmecho -n "This will change *.html to *.htm. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endifforeach file ( *.html )echo "Processing $file to `basename $file .html`.htm "mv $file `basename $file .html`.htmend--------------------------------------------------------------------19. 更改档案名称,将*.htm --> *.htmlecho -n "This will change *.htm to *.html. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endif# rename *.htm to *.htmlforeach file ( *.htm )echo "Processing $file to `basename $file .htm`.html " mv $file `basename $file .htm`.htmlend--------------------------------------------------------------------20. 将大写的档名改成小写的档名tr string1 string2 会将standard input 的字串,所对应到的string1, 都以string2 取代foreach file ( * )mv $file `echo $file | tr '[A-Z]' '[a-z]'`end--------------------------------------------------------------------21. 将小写的档名改成大写的档名foreach file (*)mv $file `echo $file | tr '[a-z]' '[A-Z]'`end</P< p>。

perl编写genesis脚本

perl编写genesis脚本

一perl是什么?二perl在哪里?三运行四注释一、Perl是什么?Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护,用于在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:///pub/gnu/perl-5.004.tar.gz}}。

安装过程为:(1)解压:$gunzip perl-5.004.tar.gz$tar xvf - <perl-5.004.tar.gz(2)编译:$make makefile(3)放置:将编译生成的可执行文件拷贝到可执行文件通常所在目录,如:$copy <compiled excutable file> /usr/local/bin/perl注:这需要系统管理员权限。

三、运行用文本编辑器编辑好你的Perl程序,加上可执行属性:$chmod +x <program>就可以执行了:$./<program>。

如果系统提示:"/usr/local/bin/perl not found",则说明你没有安装成功,请重新安装。

genesis标注脚本perl源码

genesis标注脚本perl源码

第三段编写:
####Line2 $xs=$x1+$d1/1000/2; $xe=$x1+$len; $ys=$y1; $ye=$y1;
$f->COM("add_line,attributes=no,xs=$xs,ys=$ys,xe=$xe,\ ye=$ye,symbol=r$d,polarity=positive,bus_num_lines=0,bus_dist_by=pitch,\ bus_distance=0,bus_reference=left");
}
$f->VOF; $f->COM("get_message_bar");
my ($x1,$y1,$d1); my $readbar = $f->{COMANS};
my @msgbar=split(',',$readbar); foreach my $tmp(@msgbar){
if ($tmp=~ /X=/){ $x1=substr($tmp,2,length($tmp));
genesis标注脚本perl源码
第一段编写:
#!/usr/bin/perl use strict; use lib "$ENV{GENESIS_DIR}/e$ENV{GENESIS_VER}/all/perl"; use Genesis; use encoding "utf8"; our $f=Genesis->new; our $JOB=$ENV{JOB}; our $STEP=$ENV{STEP}; our $GENESIS_DIR=$ENV{GENESIS_DIR}; our $GENESIS_VER=$ENV{GENESIS_VER}; $f->COM("units,type=mm");

Genesis2000 Script 脚本编程1

Genesis2000 Script 脚本编程1
一:Genesis-script 之C-Shell
在unix系统中,像在DOS中的batch一样,你可以把一系列命令输入到一个叫做script的文件中. 利用source命令或者设置这个文件的x(可运行)属性并直接键入该文件名, 就像用一个命令那样, 你就可以让 C shell 从文件中读入命令并执行它们.
if ( expression ) command
if ( expression )
command
# ""(backslash)后面只能接newline(回车即可), 不能有任何其他字符载
# 单个命令command不能包括"|", "&" 以及";". 也不能使用其它控制语句
不能使用下面的格式
对其他变量, 也不会发生"下标溢出"的错误, 例如:
当(n > $#var) 时, $var[n-]不给任何结果和错误信息. 而$var[m-n]给出$var[m]到$var[$#var]的words.如果(m > $#var) 则没有任何结果
2.文件操作格式
-操作符 filename
-e 文件存在返回1(.true.), 否则返回0(.false
#!/bin/csh
set ai=1
while ( $ai <= 10 )
echo the ${ai}th time running.
@ ai++
end
4. 开关控制 switchfans
语法为:
switch ( $word )
case str_1:
你可以对路径名进行操作, 以便于去掉你不需要的部分

genesis2000脚本GUI界面编写

genesis2000脚本GUI界面编写

genesis2000脚本GUI界面编写下面就是Genesis的GUI的demo程序,从里面可以学到几乎全部的GUI的功能了.前面的变量设定的部份省略不讲,大家可以参考Shell编程#!/bin/csh# This script is for GUI demo.############################################################## ####################alias gui '${GENESIS_DIR}/e${GENESIS_VER}/all/gui'alias gui_out 'echo !:* >> $GuiDefFile'alias gui_lst 'cat !:* >> $GuiDefFile'alias dogui 'gui < $GuiDefFile > $GuiDatFile; source $GuiDatFile; rm -f $GuiDefFile $GuiDatFile'if ($?GENESIS_TMP) thenset TMP = $GENESIS_TMPelse if ($?GENESIS_DIR) thenset TMP = $GENESIS_DIR/tmpelseset TMP = /genesis/tmpendif# Set gui parametersset GuiDefFile = $TMP/GuiDefFile.$$set GuiDatFile = $TMP/GuiDatFile.$$# Set fonts for gui #设定字体前三码表示字体格式,后两码数字表示大小#格式三码h 表字型(可选t) b表字宽粗体(bold)(可选m,细体) r表字正(可选i 表斜体)set TitleFont = hbr18set NormFont = hbr14set HintFont = hbi14# Set colors for gui #颜色是用RGB的型式表示,可以用Genesis中OPTION下COLOR功能来选自己喜欢的,#然后设定到GUI中去每一种颜色用两位数字表示99表示最深00表示最浅依次为R-red G-Green B-Blueset RedColor = 990000set WhiteColor = 999999set TitleColor = 772288set NormColor = 222299############################################################## #set job_list = `dbutil list jobs | awk '{print $1}'`gui_out WIN 200 200 #确定GUI窗口左上角在屏幕中的位置gui_out BG $WhiteColor #BG background背景颜色gui_out LABEL @/tmp/orblogo.xbm #添加标签(可以是一串字符,也可以是一个XPM格式图片我们在#后面会讨论如果制作这种图片,在6.如何加入中文里有说明)gui_out BG $TitleColorgui_out FG $WhiteColor #FG font ground字体颜色gui_out LABEL GUI Demogui_out BG $NormColorgui_out TEXT user_name User name : #TEXT文字输入窗口,并将值传给user_name变量, 显示”User name”gui_out DTEXT user_name Beyond Li #设定文字窗口的初始值Default TEXT=>DTEXT, 初始为Beyond Ligui_out BW 3 #BW 区隔线宽BOLD Width 设为3gui_out FORM #表格开始gui_out LABEL 'Select Job -->'gui_out LIST StepJob 5 S 1 #LIST列表选择功能StepJob为变量5表示显示5行S表示单选#多选为M, 1表示显示时从第1个项目开始显示foreach JobName ($job_list) #这里将除了genesislib以外的所有料号名都显示于LIST列表中if ($JobName != "genesislib") thengui_out $JobName #列表的内容endifendgui_out END #LIST功能结束(LIST传回的值为具体的列表中的值)gui_out ENDFORM #表格结束gui_out BW 1gui_out OPTION pnl_size Panel size: #OPTION下拉选项功能pnl_size 为变量显示”Panel size”gui_out 16x18 #选项的内容gui_out 18x24gui_out 20x24gui_out END #选项功能结束(OPTION传回的值为项目内容具体的值如16x18等)gui_out RADIO sel_pnl 'Panel name method:' H 1 $RedColor #RADIO点选功能变量为sel_p nl “’ . ’”为显示内容#H表示水平显示1表示一栏来显示最后是颜色gui_out Default #供点选的内容gui_out Keyingui_out END #点选功能结束gui_out FORM sel_pnl 2 #表格开始注意到后面有变量sel_pnl 2表示当sel_pnl选2时表格#才显现出来否则将以阴影不可编辑或选择的方式来显示gui_out TEXT pnl_name Panel name:gui_out ENDFORMgui_out CLABEL OK #按钮功能显示”OK”gui_out END #功能结束dogui #将这些传到GUI的程序中,它就会生成我们要的GUI界面.笔者通常在GUI最后,dogui之前加入一个RADIO让人员可以选择是否退出如下gui_out RADIO Exit_Chk 'Exit:' H 1 $RedColor #RADIO点选功能变量为sel_pnl “’ . ’”为显示内容#H表示水平显示1表示一栏来显示最后是颜色gui_out No #供点选的内容gui_out Yesgui_out END #点选功能结束在dogui后紧接着就设置检查if ( $Exit_Chk == 2 ) thenexit 0endif这样就可随时推出目前的GUI画面.其它的应用大家就要思考自己的工作要求,然后将这些功能灵活使用了.。

GENESIS脚本编程教材PERL

GENESIS脚本编程教材PERL
\u Force next character to uppercase
\l Force next character to lowercase
\U Force all following characters to uppercase
\L Force all following characters to lowercase
2.6.2 创建引用... 12
2.6.3 使用引用... 13
2.6.4 符号引用... 14
2.6.5 垃圾回收与弱引用... 15
2.7
数据结构... 16
2.7.1 Arrays of Arrays 16
2.7.2 Hash of Arrays 18
2.7.3 Arrays of Hashes 20
其不足是:
l
动态类型语言,不是很可靠
l
自然语言,是优点也是缺陷,使得 Perl 语言代码可能晦涩难懂;
l
智能语言,是优点也产生不足:根据上下文解释编程者之意,可能产生臆断;也
因此产生种种编程陷阱。
l
不是很优美。多种方法做事,有时会让编程者无所适从。
l
性能问题。Perl 灵活的数据结构和处理性能通常不是很高(相对 C/C++),若需要
l
文件句柄(Filehandle)指给一个文件、设备、Socket 或管道的名称。
l
子程序相对其它类型是动词(其余为名词),较为特别,将用特别的一章详细说

命名空间(Namespaces) Perl 有两种命名空间,分别是符号表(symbol tables,也称为包(package))和词汇范围(lexical scopes,可以理解为局部空间)。符号表是存储全局变量的全局关联数组(包括存储其它关 联数组),词汇范围是无名的空间,不存在于任何符号表中,而是与你程序中的一段代码块 相关联。它们包含只对该代码块可见的变量。以 our 定义的变量存在符号表中,又称为全局

genesis2024软件入门教程

genesis2024软件入门教程
genesis2024 软件入门教程
contents
目录
• genesis2024软件概述 • 安装与配置genesis2024软件 • genesis2024软件基本操作 • 数据分析与处理功能详解 • 自动化流程设计与实现 • genesis2024软件高级应用 • genesis2024软件常见问题解决方案
数据丢失或损坏
及时备份重要数据,尝试使用软件自带的修 复工具进行修复。
升级维护策略及建议
定期更新软件版本
关注官方发布的更新信息,及时下载并安装最新版本,以 获取更好的使用体验和功能支持。
01
做好数据备份工作
在升级前务必备份重要数据,以防升级 过程中出现意外情况导致数据丢失。
02
03
遇到问题及时求助
编写完善的错误处理机制,记录关键操作日 志,便于问题追踪和排查。
定时任务设置与执行监控
监控脚本执行状态
通过日志分析、系统通知等方式,实时监控脚本执行状态,确保 任务顺利完成。
异常处理与重试机制
针对可能出现的异常情况,设计相应的处理策略,如重试、跳过 或发送警报。
任务执行统计与报告
定期生成任务执行统计报告,帮助用户了解任务执行情况和性能 表现。
机器学习
集成多种机器学习算法,如 线性回归、逻辑回归、决策 树等,可用于预测和分类等 任务。
数据挖掘
支持关联规则挖掘、聚类分 析等数据挖掘方法,帮助用 户发现数据中的潜在规律和 关联。
可视化分析工具
提供直观易用的可视化分析 工具,如数据透视表、热力 图等,方便用户进行高级数 据分析练与优化
用户可以通过genesis2024软件对模型进行训练,并使用交叉验证、网格搜索等方法对 模型参数进行优化,提高模型的预测精度。

用python wxPython编写Genesis Scripts

用python wxPython编写Genesis Scripts
page 1
、列表、字典、元组和文件。其中列表就是数学里集合的建 模,字典就是对应数学里 映射的,单就这一点也说明 Python 比其他脚本语言简洁又强大。这些内置的 数据结 构,也是经过优化的,运行效率非常高。一般情况下,内置数据类型就足够我们用。 运算符优先级如下表: 3、 基本语句: 从具体的角度看,Python 可以分成模块、语句和对象。他们的 关系如下:程序是由模块组成的;模块 中包含语句;语句生成并处理对象;另外,P ython 不象பைடு நூலகம்他语言提供 switch(或 case)控制语句,只提供 以下三种控制语句: ① if 条件语句格式: if 条件 1 : #如果条件 1 满足则执行语句 1 并忽略后续语句;否则跳过语句 1 继续 语句 1 elif 条件 2: #如果条件 2 满足则执行语句 2 并忽略后续语句;否则跳过语句 2 继续 语句 2 else: #当条件 1 和条件 2 都不满足的情况才执行语句 3 语句 3 ② while 循环语句格式: if 条件 : #如果条件满足则一直执行语句 1 并忽略后续语句;否则跳过语句 1 继续 语句 1 else: #可选的 else 语句 2 #当条件不满足时执行语句 2 ③ for 循环语句格式: for 目标 in 对象: #把对象里的每一项赋值给目标 #重复循环体(语句 1) , 使用目标 语句 1 4、 函数、模块、类: ① 函数: 象在其他语言里一样,函数是结构化编程的工 具,它主要作用是代码重用和过程分解。其格式如下: def 函数名字 (参数 1,参数 2…参数 n): 语句 return 值 #参数个数是可选 的 #函数体 #返回值,当不要返回值时,可省 ② 模块: 模块是包含 Python 代码的文件,为 Python 最高级的程序组织单位 。我们可以通过 import 语句来导入模 块,进而使用模块文件里的代码(比如函数或 类等) 。因此,也可以达到代码重用功能,但最重要的还 是模块的组件共享功能。 其中环境变量 PYTHONPATH 决定了模块的查找路径。 假如在名为 m.py(模块文件应该 用.py 作文件后缀名)的模块文件里包含函数 copylayer, 那么以下语句就 是先导入 模块 m,再调用函数 copylayer: import m m.copylayer() #导入模块 m #调用模块 m 里的函数 copylayer ③ 类: 类是定义一些新东西的方式, 它把现实中的对象转换到你的程序中, 它是 Python 面向对象编程 (OOP) 的主要工具。跟函数和模块一样,类是另一种 打包逻辑和数据的方式,但它具有三个关键特征:多个 实例;通过继承来定制;操作 符重载。类的一般形式如下: class 类名(超类 1,超类 2,……): data = value def method(self,……): s elf.member.value #类用 class 语句定义,括号内为被继承的类名列表(逗号分隔, 可选) #共享的类数据 #定义类里的方法 #实例的数据 5、 Python 标准库: Python 自带几百个扩展库模块,并且在不断调整和增加, 包括文本字符串处理、网络和 Web 工具、数 据库接口、算法和数据结构、用户界面 、数字计算等等。有了这些库,我们就能直接利用,从而减少 开发时间,使编程就象堆积木那样简单。 二、 wxPython 基础: Python 自带 的图形用户界面工具是 Tkinter,它是从历史悠久的 Tcl/Tk 移植过来的。当然你可 以用 Python 和自带的 Tkinter 模块来开发 Genesis 应用,那样就省得安装另外的 GUI 工具包了。但是这里我们 还是推荐更优秀的 wxPython。 wxPython 是 Python

PERLGENESIS

PERLGENESIS

1、在Genesis中使用Perl的配置Perl Scripts1.csh.exe2.cd c:\perl\lib\core3.h2ph.bat*sys/*4.会在c:\perl\site\lib\下产生*.ph5.在c:\winnt\system32\drivers\etc\services文件里加入genesis56753/tcp#Genesis port for scripts6.将Genesis.pm,server.pl拷贝到c:\perl\site\lib这样以后写程式就不用特别指定路径只需use Genesis;即可7.程式的开头如下use Genesis;$f=new Genesis;程式后面就看你要写什么了...........8Genesis for NT要用CSH写一个调用程式假设主程式名称为Example.pl另外写一个呼叫Example.pl的小程式,其档名为:call_example.csh(档名随便)call_example.sh的內容如下:#!/bin/cshperl$path/example.pl要加一個enter,确定换行9.然后就可以Run2、Pdk编译perl教程1.首先选取perl结合目前pdk版本与perl的兼容性,经多次测试最终我选择了perl5.8.8.824这个版本。

虽然现在perl已经有8.10正式版了,要考虑pdk既可以编译win平台,也要支持编译linux平台和solaris平台。

在activestate网站并没有太多的这三平台的共同兼容的模块(主要是tk方面的),我是从perl5.8.8.818一直测试到perl5.10.1.1006版本。

如果你只是编译win平台下,那perl5.10完全没问题。

Perl5.10不带tk模块,需要自行安装(稍候告诉大家如何安装)。

从perl5.8.8.824之后版本的ppm可以自动更新模块了。

也就是说可以利用ppm安装模块!将ppm自动更新地址设置成上图所指示位置(一般默认)。

genesis 2000 自动化阻抗制作脚本使用说明

genesis 2000 自动化阻抗制作脚本使用说明

自动化阻抗制作脚本使用说明1,脚本运行环境:WINDOWS 操作系统,GENESIS8.2、GENESIS9.1、GENESIS9.2、GENESIS9.8 2,制作阻抗测试条种类。

差动阻抗(DF),特性阻抗(SE)。

3,程式运行界面和介绍。

阻抗信息显示区。

A,阻抗信息录入,首先阻搞信息,请确定录入阻抗是的状态,如果状态不对,参考资料将保证是正B.TopRefLayer : 阻抗顶层,即顶层C.BotRefLayer: 阻抗不,测试阻抗条底层。

D.ArtWorkLine :工作稿线宽。

E.ArtWorkSpacing :工作稿线距。

F.SafeCopperSpacing:阻抗线线距铜皮距离。

G.SafeCopperWidthMin:保护铜皮最小宽度。

H.Imp:阻抗值(注:此参数仅添加文字标注时用)。

I.ImpTol:阻抗公差(注:此参数仅添加文字标注时用)。

J.阻抗条宽:测试条宽度。

K.阻抗条长:阻抗条长度。

L.阻抗定位孔:阻抗定位孔左右各一个(左右距板边各1.5MM,上下居阻抗条宽中心)。

M.阻抗测试孔:阻抗测试孔大小为1.00mm。

单组阻抗信息:New:选项:新增阻抗,点击《添加阻抗参数》为新增一组阻抗值。

View选项:点击《添加阻抗参数》,自动计算阻抗组数和添加阻抗条数量,以及查看当Order组数的详细信息。

Edit选项:双击阻抗信息显示区对应ORDER对应组数如下,刚才当前为View,修改时点选EDIT,修改当前组抗条的参数,再选《添加阻抗参数》执行编辑。

所有阻抗参数添加OK后,执行《添加阻抗条》。

结果如下:。

genesis2000脚本编写(第一章)

genesis2000脚本编写(第一章)

本章内容主要介绍genesis自动化程序编写运行环境:首先对genesis2000软件进行简单的介绍;而后介绍genesis2000自动化程序的开发方式和开发语言;最后介绍自动化程序在软件中的接口。

1.1、 genesis2000软件简介:Genesis2000软件是由Orbotech与Valor的合资公司—Frontline公司开发的CAM系统,其目的是为实工程现制前自动化,为CAM处理提供最佳解决方案,由于该软件拥有很强大的功能,很多PCB生产公司都已使用它为CAM 制前服务,笔者认为该软件有以下几方面的优点:1)令人喜欢的操作界面genesis2000软件界面设计人性化,操作简单,易学。

2)用ODB++格式,使用ODB++格式有以下三个优点:(1):使设计和制造之间数据交换最优化。

(2):目前唯一性的可扩充的结构。

(3):更精确的数据描述。

3)强大的操作辅助指令genesis2000软件的操作辅助指令可以简化很多复杂的工作,很简单的操作就可以达到我们想要的目的。

4)大的分析和优化功能genesis2000软件的Analysis和DFM功能在精密度要求越来越高的PCB行业显得极为重要,它自动进行精密的分析和优化,而用手动操作根本不可能实现。

5)自动化程序开发genesis2000软件的自动化程序可以让我们任何有规律的操作,有迹可寻的设定变成自动化,大大节省制作时间和减少人为误操作。

6)不断的围绕用户升级genesis2000软件不断围绕用户的需求进行开发新的实用的功能,笔者在使用的几年间,genesis2000开发了很多新的功能。

1.2:genesis2000软件自动化程序开发方式和语言:1.2.1genesis2000软件自动化程序的编写方式可分为以下三种:1)scripts2)hooks3)forms and flows1.2.2genesis2000软件自动化程序编写语言genesis2000软件自动化程序编写语言可以用多种语言进行实现:如SH、CSH、BSH、KSH、TCL/TK、PERL/TK,等等,本书主要介绍CSH,和PERL/TK两种比较常用的编写语言。

GENESIS脚本培训第一章

GENESIS脚本培训第一章

自动化程序编写和运行环境本章内容主要介绍genesis自动化程序编写运行环境:首先对genesis2000软件进行简单的介绍;而后介绍genesis2000自动化程序的开发方式和开发语言;最后介绍自动化程序在软件中的接口。

1.1、 genesis2000软件简介:Genesis2000软件是由Orbotech与Valor的合资公司—Frontline公司开发的CAM系统,其目的是为实工程现制前自动化,为CAM处理提供最佳解决方案,由于该软件拥有很强大的功能,很多PCB生产公司都已使用它为CAM 制前服务,笔者认为该软件有以下几方面的优点:1)令人喜欢的操作界面genesis2000软件界面设计人性化,操作简单,易学。

2)用ODB++格式,使用ODB++格式有以下三个优点:(1):使设计和制造之间数据交换最优化。

(2):目前唯一性的可扩充的结构。

(3):更精确的数据描述。

3)强大的操作辅助指令genesis2000软件的操作辅助指令可以简化很多复杂的工作,很简单的操作就可以达到我们想要的目的。

4)大的分析和优化功能genesis2000软件的Analysis和DFM功能在精密度要求越来越高的PCB行业显得极为重要,它自动进行精密的分析和优化,而用手动操作根本不可能实现。

5)自动化程序开发genesis2000软件的自动化程序可以让我们任何有规律的操作,有迹可寻的设定变成自动化,大大节省制作时间和减少人为误操作。

6)不断的围绕用户升级genesis2000软件不断围绕用户的需求进行开发新的实用的功能,笔者在使用的几年间,genesis2000开发了很多新的功能。

1.2:genesis2000软件自动化程序开发方式和语言:1.2.1genesis2000软件自动化程序的编写方式可分为以下三种:1)scripts2)hooks3)forms and flows1.2.2genesis2000软件自动化程序编写语言genesis2000软件自动化程序编写语言可以用多种语言进行实现:如SH、CSH、BSH、KSH、TCL/TK、PERL/TK,等等,本书主要介绍CSH,和PERL/TK两种比较常用的编写语言。

perlGenesis

perlGenesis

1、在Genesis中使用Perl的配置Perl Scripts1. csh.exe2. cd c:\perl\lib\core3. h2ph.bat * sys/*4. 会在c:\perl\site\lib\下产生*.ph5. 在c:\winnt\system32\drivers\etc\services文件里加入genesis 56753/tcp # Genesis port for scripts6. 将Genesis.pm,server.pl 拷贝到c:\perl\site\lib这样以后写程式就不用特别指定路径只需use Genesis; 即可7. 程式的开头如下use Genesis;$f = new Genesis; 程式后面就看你要写什么了...........8 Genesis for NT 要用CSH写一个调用程式假设主程式名称为Example.pl另外写一个呼叫Example.pl的小程式,其档名为: call_example.csh(档名随便)call_example.sh的內容如下:#!/bin/cshperl $path/example.pl 要加一個enter,确定换行9. 然后就可以Run2、Pdk编译perl教程1.首先选取perl结合目前pdk版本与perl的兼容性,经多次测试最终我选择了perl5.8.8.824这个版本。

虽然现在perl已经有8.10正式版了,要考虑pdk既可以编译win平台,也要支持编译linux平台和solaris平台。

在activestate网站并没有太多的这三平台的共同兼容的模块(主要是tk方面的),我是从perl5.8.8.818一直测试到perl5.10.1.1006版本。

如果你只是编译win平台下,那perl5.10完全没问题。

Perl5.10不带tk模块,需要自行安装(稍候告诉大家如何安装)。

从perl5.8.8.824之后版本的ppm可以自动更新模块了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一perl是什么?二perl在哪里?三运行四注释一、Perl是什么?Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护,用于在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:///pub/gnu/perl-5.004.tar.gz}}。

安装过程为:(1)解压:$gunzip perl-5.004.tar.gz$tar xvf - <perl-5.004.tar.gz(2)编译:$make makefile(3)放置:将编译生成的可执行文件拷贝到可执行文件通常所在目录,如:$copy <compiled excutable file> /usr/local/bin/perl注:这需要系统管理员权限。

三、运行用文本编辑器编辑好你的Perl程序,加上可执行属性:$chmod +x <program>就可以执行了:$./<program>。

如果系统提示:"/usr/local/bin/perl not found",则说明你没有安装成功,请重新安装。

注:你的程序的第一行必须为#!/usr/local/bin/perl(perl所在位置)。

四、注释:注释的方法为在语句的开头用字符#,如:# this line is a comment注:建议经常使用注释使你的程序易读,这是好的编程习惯。

未完待续本教程为flamephoenix翻译整理本教程欢迎下载、转载和链接,转载必须保留本说明并保持文章完整。

本教程不允许以任何形式用于商业用途。

对本教程有何疑问、更正或建议请告诉我,谢谢。

第二章简单变量一整型二浮点数三字符串基本上,简单变量就是一个数据单元,这个单元可以是数字或字符串。

一、整型1、整型PERL最常用的简单变量,由于其与其它语言基本相同,不再赘述。

例:$x = 12345;if (1217 + 116 == 1333) {# statement block goes here}整型的限制: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 ("first value is ", $value, "\n");$value = 9.01e+21 - 9.01e+21 + 0.01;print ("second value is ", $value, "\n");---------------------------------------------------------$ program3_3first value is 0second value is 0.01三、字符串惯用C的程序员要注意,在PERL中,字符串的末尾并不含有隐含的NULL字符,NULL字符可以出现在串的任何位置。

. 双引号内的字符串中支持简单变量替换,例如:$number = 11;$text = "This text contains the number $number.";则$text的内容为:"This text contains the number 11.".双引号内的字符串中支持转义字符Table 3.1. Escape sequences in strings.\L、\U、\Q功能可以由\E关闭掉,如:$a = "T\LHIS IS A \ESTRING"; # same as "This is a STRING".要在字符串中包含双引号或反斜线,则在其前加一个反斜线,反斜线还可以取消变量替换,如:$res = "A quote \" and A backslash \\";$result = 14;print ("The value of \$result is $result.\n")的结果为:The value of $result is 14..可用\nnn(8进制)或\xnn(16进制)来表示ASCII字符,如:$result = "\377"; # this is the character 255,or EOF$result = "\xff"; # this is also 255.单引号字符串单引号字符串与双引号字符串有两个区别,一是没有变量替换功能,二是反斜线不支持转义字符,而只在包含单引号和反斜线时起作用。

单引号另一个特性是可以跨多行,如:$text = 'This is twolines of text';与下句等效:$text = "This is two\nlines of text\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 或 $a or $b逻辑与:$a && $b 或 $a and $b逻辑非:! $a 或 not $a逻辑异或:$a xor $b五、位操作符位与:&位或:|位非:~位异或:^左移:$x << 1右移:$x >> 2注:不要将&用于负整数,因为PERL将会把它们转化为无符号数。

六、赋值操作符=可在一个赋值语句中出现多次,如:$value1 = $value2 = "a string";.=作为子表达式($a = $b) += 3;等价于$a = $b;$a += 3;但建议不要使用这种方式。

七、自增自减操作符:++、--(与C++中的用法相同).不要在变量两边都使用此种操作符:++$var-- # error.不要在变量自增/减后在同一表达式中再次使用:$var2 = $var1 + ++$var1; # error .在PERL中++可用于字符串,但当结尾字符为'z'、'Z'、'9'时进位,如:$stringvar = "abc";$stringvar++; # $stringvar contains "abd" now$stringvar = "aBC";$stringvar++; # $stringvar contains "aBD" now$stringvar = "abz";$stringvar++; # $stringvar now contains "aca"$stringvar = "AGZZZ";$stringvar++; # $stringvar now contains "AHAAA"$stringvar = "ab4";$stringvar++; # $stringvar now contains "ab5"$stringvar = "bc999";$stringvar++; # $stringvar now contains "bd000".不要使用--,PERL将先将字符串转换为数字再进行自减$stringvar = "abc";$stringvar--; # $stringvar = -1 now.如果字符串中含有非字母且非数字的字符,或数字位于字母中,则经过++运算前值转换为数字零,因此结果为1,如:$stringvar = "ab*c";$stringvar++;$stringvar = "ab5c";$stringvar++;八、字符串联结和重复操作符联接: .重复:x联接且赋值(类似+=): .=例:$newstring = "potato" . "head";$newstring = "t" x 5;$a = "be";$a .= "witched"; # $a is now "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);PERL 5中,还可以在赋值式左边使用条件操作符来选择被赋值的变量,如:$condvar == 43 ? $var1 : $var2 = 14;$condvar == 43 ? $var1 = 14 : $var2 = 14;十一、操作符的次序.操作符结合性(associativity):建议:1、当你不确定某操作符是否先执行时,一定要用括号明确之。

相关文档
最新文档