Chinaunix首页 | 论坛 | 博客
  • 博客访问: 531684
  • 博文数量: 126
  • 博客积分: 851
  • 博客等级: 准尉
  • 技术积分: 1287
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-06 11:21
个人简介

个人最新博客地址http://www.skylway.com/

文章分类

全部博文(126)

文章存档

2016年(2)

2014年(60)

2013年(35)

2012年(29)

分类: Python/Ruby

2012-10-31 21:35:07

一.chomp
作 用:去除读入字符串的换行符,去除\n或者\r\n:
简单举例:

while()
{
my $tmp_record = $_;
chomp
($tmp_record);
}

简单说明:此时$tmp_record变量的结束处已经不包含换行符;


二.split
作 用:根据某个模式分割字符串;
简单举例:
my @record=
split(/\|/,$tmp_record);


简单说明:定义一个record数组,根据“|”分割变量$tmp_record内容;

三.while

用:循环遍历
简单举例:
open(FDATA, "test.txt: $!";
while()
{
my $tmp_record =
$_;
chomp ($tmp_record);
my @record=
split(/\|/,$tmp_record);
}
close(FDATA);


简单说明:读取test.txt文件,循环遍历文件中的内容;

四.foreach
作 用:循环遍历

简单举例:
foreach $ckey(sort keys %g_bll)
{
my $tmp_record
= $g_bll{$ckey};
chomp ($tmp_record);
my @record=
split(/\|/,$tmp_record);
}


简单说明:循环遍历%g_bll_charge_map容器中的内容;

五.substr
作 用:截取字符串

简单举例:
例一:my $FirstFlag = substr(“abcdefg”,0,1);
例二:my $FirstFlag =
substr(“abcdefg”,-1,1);


简单说明:有三个参数,分别是截取的父串,从0开始的初始位置,字串的长度;

例一中截取abcdefg字符串中从0开始长度为1的字符串,结果返回a;
 
例二中截取abcdefg字符串中最后一个字符串,结果返回g;

六.sort

用:简单排序
简单举例:
foreach $ckey(sort keys %g_bll)
{
my
$tmp_record = $g_bll{$ckey};
chomp ($tmp_record);
my
@record= split(/\|/,$tmp_record);
}


简单说明:循环遍历容器中的内容,按照key值排序;exists

七.exists

用:查看hash中是否存在某个值
简单举例:
if(exists $g_bll{date})
{

}

简单说明:查看容器$g_bll中是否存在键值为date的数据,存在返回true,不存在返回false;


八.读取文件
作 用:打开文件句柄,读取文件内容
简单举例:
open(FDATA,
"< foreach
$temp_acctsub(sort keys %g_bll_map)
{
my $result =
$g_bll_map{$temp_acctsub};
print FDATA $result ;
}

close(FDATA);

简单说明:读取文件test.txt中的内容,如果不存在该文件,用die命令输出错误信息;


九.读取文件夹
作 用:读取文件夹下的内容
简单举例:
opendir DH,$g_work_path
or die "Cannot open the DIR!";
foreach $dirname(readdir DH)

{
if($dirname ne "." and $dirname ne "..")
{

my $filename = $g_work_path .$dirname;
$file_name_map{$filename}
= $dirname;
}
}
closedir(DH);


简单说明:和读取文件不同的是使用opendir和closedir;

十.向文件中写内容

用:读取文件夹下的内容
简单举例:
open(FDATA, ">>test.txt")||die "Failed to
open test.txt: $!";
foreach $key(sort keys %g_fee_info_map)

{
........
}
print FDATA $temp_info . "\r\n";

close(FDATA);

简单说明:打开文件句柄,>>向文件中追加;


十一.map容器的使用
作 用:key值匹配value值
简单举例:
$g_bill_map{$id}
= $info;

简单说明:以id为键值,存储不同用户的信息;如果key值相同,value值会被覆盖;


十二.map容器的嵌套使用
作 用:value值仍旧是一个map,双层map的使用
简单举例:

$g_info_map{$filekey}{$acctsub} = $temp_subinfo_fee; -----存储用户信息


my %g_subinfo_map = %{$g_info_map{$filekey}};
-----提取用户信息

简单说明:存储用户信息----使用$filekey和$acctsub两个键值存储$temp_subinfo_fee,实际上这边有两个map:

首先通过$filekey可以查处一个用用户信息的map,用户信息的map是以$acctsub为键值,$temp_subinfo_fee为value;

提取用户信息----定义了一个%g_subinfo_map的map来存储通过$filekey查询出的用户信息;


十三.perl脚本中调用lunix命令
作 用:
简单举例:
`mkdir -p
$g_out_put_path`;

简单说明:创建文件夹,用``;


十四.perl脚本中和数据库交互
作 用:通过脚本访问数据库
简单举例:
sub
get_bll_charge_from_database()
{
my $g_sql = "select b.acct_id
|| '|' || b.sub_id || '|' || b.item_id || '|' || b.cos || '|' || b.charge ||
'|' || b.bill_id || '|' || b.number \n"
. " from
bll_info; \n";


& create_unload_sql_file($g_bll_sqlfile,$g_bll_file,$g_sql);


`sqlplus $dbstr \@$g_bll_sqlfile`;

my(@szContent) = `cat
$g_bll_file|grep ORA-`;

foreach (@szContent){
my
$tmpContent = $_;
if($tmpContent =~ /ORA-(\d)+/)
#这里出错了
{
print $tmpContent;

return;
}
}
}

sub
create_unload_sql_file()
{
#$_[0] -> sqlfile;$_[1] ->
datafile;$_[2] -> sql;
open(FSQLFILE,">$_[0]") || die "Failed to
open $_[0]:$!";

printf FSQLFILE "set serveroutput on
\n";
printf FSQLFILE "set time on \n";
printf FSQLFILE "set
timing on \n";
printf FSQLFILE "set linesize 1000 \n";

printf FSQLFILE "set echo off \n";
printf FSQLFILE "set term off
\n";
printf FSQLFILE "set heading off \n";
printf FSQLFILE
"set pagesize 0 \n";
printf FSQLFILE "set trimspool on \n";

printf FSQLFILE "set feedback off \n";
printf FSQLFILE "set time off
\n";
printf FSQLFILE "set timing off \n";
printf FSQLFILE
"spool $_[1] \n";
printf FSQLFILE "$_[2] \n";
printf
FSQLFILE "spool off \n";
printf FSQLFILE "exit; \n";

close(FSQLFILE);
}

简单说明:1. $dbstr数据库连接串;

2. `sqlplus $dbstr \@$g_bll_sqlfile`;
不能直接跟SQL,将SQL写到一个文件中,执行文件;

3.create_unload_sql_file方法对数据库进行设置,并访问数据库执行SQL;

4.将结果写入到$g_bll_file文件中;
阅读(1770) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~