设为首页 收藏本站
查看: 1406|回复: 0

[经验分享] summarize perl

[复制链接]
发表于 2015-12-27 11:43:10 | 显示全部楼层 |阅读模式
  一:PERL 简介:
  PERL 是处理文本文件的强大工具,语言简洁明了,功能强大、灵活。简单的代码能完成很多的工作。因此,此项目中大部分是对文本文件的操作,所有选用此脚。
  二:PERL细小技术分析:

  • PERL中的变量。
  PERL 中的变量很灵活,它不像c/c ++/java对变量有严格的要求。PERL对变量的使用不必申明或者初始化,想用就用。但是这样不太严谨,代码看似很乱,不防仿照C、java风格来使用PERL的变量。可以对用到的变量在程序前先相识的申明,用my修饰。也可以不用。例如:
  my $file_path="";
my $Oracle_databaseName="";
my %tableName;
my @array_column;
my @augment_attribute;
my @attribute;
my @uq_primary_index_or_pk=();
my @primary_index=();
my @unique_index=();
  说明:字符用$标注,数组用@标注,字符串单双引号都可以。在PERL中注释是#。

  • 获取文件:分文文件夹文件很单一文本文件。
  A:文件夹文件获取。参考代码:
  #---open I/P directory for reading DDL SQL
    opendir(TEMP,$file_path) || die "can't open the file or no directory!\n";
  说明:打开文件夹用OPENDIR关键字,两个参数,一个是缓存中缓存的路径,第二个是打开的文件夹路径,die是语法结构,对重大的错误做回应,后面跟回应的信息。
  GREP是正则表达式的匹配,表示你要去除文件夹下的什么文件。i表示大小写忽略不计,后面就是缓存的文件夹路径。文件会以数组的形式返回。我们就可以循环的读取数组,提出想要的文件了。读取数组常用的代码:
  @Files=grep/.sql$/i,readdir TEMP;
  B:直接打开文件。参考代码:
  open( PF, $ddl_file_path) or die "\"".$file_path."\": ".$!."\nUsage". $0 ."<DDL File>\n";
  open (DDL, '>>oracle_ddl_and_data_import/oracleSource/ddl/Oracle_DDL.sql') or die "Cannot open file for writing\n$!\n";
  说明:OPEN后的参数:第一个是打开路径问价下的缓存,第二个就是某个路径下的问价。$!返回的是该脚本的文件名,$0是文件的路径,由此可以看出,它是以正则表达式匹配的形式去查找的。后面一句是写入文件的代码,分为追加和替换。
  C: 读取文本内容:
  一行行的读取返回的内容。
  Line:while(<PF>){············}

  • 一些关键的PERL 表示:
  A: $ARGV 是PERL内置的一个默认变量,代码中直接使用
  B:$_:PERL中默认的匹配字符串。
  C:  $[数字] 表示返回捕捉的内容。
  D: $+表示返回最后的一个捕捉内容。
  
  三:细谈PERL:
  1:标量数据。
  Perl程序中可以直接写数字:
  2:字符操作:
  3:反斜杠转义:
  4: UNIX下替换空格命令
  cat financial_TeradataTable.sql | sed ':a;N;$!ba;s/\(UNIQUE PRIMARY INDEX ( .* ,\)\n/\1/g'
  解释代码:
  1,匹配的就是UNIQUE PRIMARY INDEX ( cust_id ,acct_type ,tran_period ,tran_channel ,就是这串(也把换行匹配)。\(       ·····\)是一对,表示捕获到匹配的值。
  也就是这串字符串匹配之后会返回UNIQUE PRIMARY INDEX ( cust_id ,acct_type ,tran_period ,tran_channel ,这样的一串字符串。
  这里的\1不是什么转义字符,他表示的是前面匹配中第一对括号\(····\)中捕获的值。所以替换之后就没有换行了,下一行就自动跳上来。
  (.*, 这个匹配不是括号中,而是匹配 “( 任意多的字符和逗号”整合下来就是匹配“( cust_id ,acct_type ,tran_period ,tran_channel ,”红色的那串就是.*

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156908-1-1.html 上篇帖子: 正则表达式之二:与正则表达式进行匹配-正则表达式与Perl接轨 下篇帖子: Python与Perl的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表