perl常用特殊变量
1. $_ $ARG,常常是一个默认变量 2. @_ @ARG,子例程参数表 3. {row.content} $PROGRAM_NAME,本程序的名字 [@more@]4. @ARGV 本程序的命令行参数表 5. $" $LIST_SEPARATOR,数组内插到双引号字符串中时所用的分隔符, 默认为空格 6. $, $OFS,或$OUTPUT_FIELD_SEPARATOR,用于print的输出字段分隔符, 即一个print语句中用逗号分隔的部分之间用什么分隔,默认为无 7. $ $ORS,或$OUTPUT_RECORD_SEPARATOR,用于print的输出记录分隔符, 即一个print语句结束时末尾添加什么,默认为无 8. $/ $RS,或$INPUT_RECORD_SEPARATOR,输入记录
perl文件操作
用 Sysopen()进行更多的控制 为了更好的控制文件的打开方式,可以使用 sysopen() 函数: use Fcntl; sysopen(FH, $filename, O_RDWR|O_CREAT, 0666) or die "Can't open $filename for reading/writing/creating : $!"; [@more@]函数 sysopen() 带有四个参数,第一个是同open()函数类似的文件句柄参数,第二个参数是不带模式信息的文件名,第三个参数是模式参数,由Fcntl 模块提供的逻辑OR运算组合起来的常数构成,第四个参数(可选),为八进制属性值(0666表示数据文件, 0777表示程序)。如果文件可以被打开,sysopen() 返回true
perl调试哲学(转)
描述 我的调试哲学我相信三件事情:这不是个人问题别老想着是你的代码。你可能觉得自己是个艺术家,但实际上就算是经验丰富的大师也会写出很多垃圾。每个人的代码都是垃圾,我的也是你的也是。要学着去喜欢它。当你碰到问题的时候,你应该想:“噢,我写的垃圾代码出了点问题。”这说明你不再去责怪 Perl。不应该变成个人性的问题。忘记你以前怎么做的。如果不是你做事的方法有点问题,你也不会来读这个。这并不是坏事,只是到了该有点长进的时间。我们都经历过的。[@more@]个人责任感如果你的代码出了问题那仅仅是——你的问题。你应该尽
PERL SOCKET
使用PERL SOCKET API首先需要载入SOCKET模块。 use Socket; socket(文件句柄,AF_INET,数据类型,协议类型); #建立套接字 文件句柄随便找个词就可以了。 AF_INET为域类型,也可以写为PF_INET。 数据类型,通常用有两种:SOCK_STREAM、SOCK_DGRAM。 协议类型,可以用协议号代替,EGP---8、HMP---20、ICMP---1、 RAW---255、RDP---27、RVD---66、TCP---6、UDP---17、XNS-IDP---22、 其他---22、ALL---0;也可以用getprotobyname()函数作此参数。 例子:socket(SOCK,AF_INET,SOCK_STREAM,getprotobyname('tcp')); 语柄为SOCK,套接字以TCP方式传
利用Perl解析XML文件
当在Perl中使用XML时,你会有将近五百个CPAN模块可以选择,每一个都支持整合Web服务的不同方面。此外,Perl的核心库包括多个支持XML的模块。这篇文章就关注于一个最早期且涉及最频繁的核心模块:XML::Parser. XML::解析器系列 最初的Perl解析器XML::Parser::Expat由Larry Wall在几年前编写并由Clark Cooper保持延续。模块作为Expat XML parser的界面由James Clark用C语言编写且已经被一些脚本语言所采用。 Expat是一个以事件为基础的解析器,意味着特定条件触发处理功能。例如,一个开始或结尾标记将触发适当的用户定义子程序。XML::Parse
unlink,link,symlink等,处理文件和目录
删除文件在perl中用unlink操作符删除文件,同shell的rm命令一样。unlink "aa","bb","cc"; 把这三个文件删除。与glob函数结合起来可以一次删除多个文件unlink glob "*.o"; 删除当前目录下以.o结尾的文件,与rm *.o相似。unlink的返回值告诉我们有多少文件被成功删除。my $successful = unlink "aa","bb","cc";print "I delete $successful file(s) just now.n";[@more@]如果想知道那个文件被删除,可用循环,一次删除一个文件。foreach my $fi
perl 中glob函数的使用
ExampleTry out following example: Here glob will retun all the files which begin with "perl_g"#!/usr/bin/perl(@file_list) = glob "perl_g*";print "Returned list of file @file_listn";[@more@] Syntaxglob EXPRglobDefinition and UsageReturns a list of files matching EXPR as they would be expanded by the standard Bourne shell. If the EXPR does not specify a path, uses the current directory. If EXPR is omitted, the value of $_ is used.From Perl 5.6 on, expansion is done in
数据仓库监控平台
2008年初,我在itpub论坛上提出了怎么做数据仓库监控平台的帖子,得到了很多网友的建议,时过一年,我的监控平台的运行已经取得了很好的效果,作为回报,我对监控平台的思想做个总结,献给大家。对于大型的数据库应用系统(如BI系统),都包括很多服务和应用,我们没法实时知道系统运行是否正常,特别是晚上的时候,如果服务器宕机了、应用服务死掉了、数据库空间不足了、ETL服务器磁盘满了、关键作业链上的某个作业失败等等中的任何一个环节出现问题,都会严重影响客户体验,甚至带来不可预料的麻烦,这时候就必须有一套对系统进行监控的措
80后的格言
“80后”,曾经被认为是“柔弱的一代”、“垮掉的一代”,然而,进入08年,当国家经历重大苦难之时,“80后”们用实际行动告诉世人:我们正在走向成熟。人终要长大的。换言之,是自己慢慢学着长大。在人生的道上一步一个脚印,或深或浅记录着芸芸众生成长的深度。成长越慢的人往往受得伤就会越多,面对种种伤痕我们要做的不仅仅是承受,更多的是要感恩。感谢那些让你受伤的事情,忘记那些让你受伤的人,伤害也许是无意的,成长却是必须的。[@more@]1、每天11:00点前睡觉,每天7:30点前起床,熬夜是自毁青春最大的表现2、每天提醒自己,不
perl 多线程
需要引入的pm文件有:use threads; #导入threads多线程处理包 use threads::shared; #使用线程间共享变量程序和C基本上一样,下面是有关线程操作的相关代码:#main functionsub main(){ $dbcon = ConnectTD(); while(1) { my @dataset = Get_Config_Info(); my $rec_cnt = @dataset; for(my $i=0;$i<$rec_cnt;$i++) { processFiles($dataset[$i][0],$dataset[$i][1],$dataset[$i][2],$dataset[$i][5],$dataset[$i][6],$dataset[$i][7]); } fore
perl操作二维数组
NAME perllol - 操作数组的数组(二维数组)说明 声明和访问数组的数组 创建一个数组的数组(有时也可以叫“列表的列表”,不过不太准确)真是再简单也不过了。它相当容易理解,并且本文中出现的每个例子都有可能在实际应用中出现。 数组的数组就是一个普通的数组(@AoA),不过可以接受两个下标("$AoA[3][2])。 [@more@]下面先定义一个这样的数组: # 一个包含有“指向数组的引用”的数组 @AoA = ( [ "fred", "barney" ], [ "george", &qu
perl连接Oracle错误
error "ORA-12705: Cannot access NLS data files or invalid environment specified" 如果在同一台电脑上已经先安装了标准的 Oracle Database Client,就会出现这个错误信息,解決方法:打开注册表 HKEY_LOCAL_MACHINESOFTWAREORACLE 內找出 NLS_LANG ,这个键值现在应该是 NA,也是导致 ORA-12705 错误的原因,因此將 NLS_LANG 的值改为AMERICAN_AMERICA.ZHS16GBK 就可以正常使用了。[@more@]
项目团队组建的原则(转)
① 根据项目范围和预算确定团队的人数 项目初始阶段,项目经理也许只了解到一些有关项目范围、交货期限方面的信息以及客户对一些功能需求的简单描述。为了对项目人力进行估计,有必要进一步细化项目范围。 [@more@]◆ 首先在企业内部争取到一个比较得力的助手,他可能是项目未来的开发经理、系统分析员或高级程序员。这一点很重要,既然你的项目组一定会有其他人的参与,与其到外面去招,不如在内部找你熟悉和信赖的同事加盟。因为你不仅了解他们的能力,而且作为老员工,他们的稳定性也相对有保障,更重要的是,项目一开始你就不再是孤军
项目经理开会要点
组织会议是项目经理日常工作中一项非常重要的工作任务,项目过程中很多重要的决定都是在会议中做出的,也有很多由于不成功的会议而对项目本身造成了不好的影响。[@more@]首先我们看看不成功的会议常常表现为哪些形式: 1、会议氛围不好,参与者发言不踊跃;2、会议讨论常常偏离主题;3、会议没有取得预期的结果;4、会议时间常常一拖再拖。这些不成功的会议最终的结果就是:既浪费了大家的宝贵时间又没有达到会议的目的,很多人都经历过这样的会议,对此也是深恶痛绝。以下是根据我个人的经验,列出了会议组织者应该注意的问题,也可看作组
Teradata访问权限及实体类型缩写
Teradata中有一些缩写,分别代表特定的访问权限或表类型,整理如下:访问权限:'AE'-->'ALTER EXTERNAL PROCEDURE';'AF'-->'ALTER FUNCTION';'AP'-->'ALTER PROCEDURE';'AS'-->'ABORT SESSION';'CA'-->'CREATE AUTHORIZATION';'CD'-->'CREATE DATABASE';'CE'-->'CREATE EXTERNAL PROCEDURE';'CF'-->'CREATE FUNCTION';'CG'-->'CREATE TRIGGER';'CM'-->'CREATE MACRO';'CO'-->'CREATE PROFILE';[@more@]'CP'-->'CHECKPOINT';'CR'-->'CREATE ROLE';'CT'-->'CREATE TABLE';'CU'-->'CREATE USER
oleload导excel数据
看见同事为了导excel数据到数据库中,都是写个fastload脚本或者tpump脚本,这样在整数据格式的时候是很费时费力的操作,殊不知,teradata提供的oleload工具可以直接导excel数据到teradata库当中,操作简单:[@more@]1、select souce选项卡里面选择:Microsoft.Jet.OLEDB.4.0,会弹出对话框:a、“连接”选项卡:“选择或数据数据库名称”里面选择将要导入的数据源excel;用户名/密码可以不管;b、“高级”选项卡保持默认;c、“所有”选项卡:Extended Properties填上:Excel 8.0;IMEX=12.目标库当然选Teradata;后面的操作不用说了,sett
职场定律
办公室虽然只是一个小环境,却是一个大的生态场,足以让你窥一孔而知全豹,洞明世事,参透人情。 升迁定律:仕入官场,每升一级,人情味便减少一分。 升值定律:出口转内销,连舆论都是如此。 [@more@]游戏定律:无论你保龄球打得多“菜”,每次玩至少都会有一两次全中,令你满意高兴得下次再来。 价值定律:未有想有的时候价值最高,一旦拥有开始贬值,拥有越多越不值钱。 人生定律:拼命想得到的,都不是最需要的。 旅游定律:没有比记忆中的风景再美好的了,所以不要旧地重游。 金钱定律:在一切人手中,但不是一
ODS vs DW(转)
ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需 求。常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一。根据Bill.Inmon的定义,“数据仓库是面向主题的、集成的、稳定的、随时间变化的,主要用于决策支持的数据库系统”[@more@]在Kimball的,他是这样定义的1. 是操作型系统中的集成,用于当前,历史以及其它细节查询(业务系统的一部分)2. 为决策支持提供当前细节数据(数据仓库的一部分)因此操作数据存储(ODS) 是用于支持企业日常的全局应用的数据集合,ODS的
Teradata 时间函数
时间差异(月):select (date '2003-08-15' - date '2003-01-01') month;时间差异(天):select date '2003-08-15' - date '2003-01-01';[@more@]时间差异(秒):select ((time02 / 10000) * 3600 + (time02 / 100 MOD 100) * 60 + (time02 MOD 100)) - ((time01 / 10000) * 3600 + (time01 / 100 MOD 100) * 60 + (time01 MOD 100)) as time_diff月份操作:select add_months(current_date, 3); ADD_MONTHS(Date, -2) add_months(date '2002-01-31', 1);本月第一天:select date - extract(day from date) + 1上月最后
Teradata Dates and times
Dates, times, and timestamps in Teradata (V2R4.1) can be a little tricky. This document explains how to do various things that you may want to do.[@more@]Dates, times, and timestamps in Teradata (V2R4.1) can be a little tricky. This document explains how to do various things that you may want to do.Preliminaries The examples below use Teradata syntax, so they assume that you are running in BTEQ. If you are using Queryman, be sure to uncheck the option box "Allow use of ODBC SQL Extensions i