⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fc_preprocesscolinf.pm

📁 Perl开发的数据采集工具 基于UNIX
💻 PM
字号:
package FC_PreprocessColInf;#################################################################################  @(#) Perl Module:FC_PreprocessColInf##  Copyright(C) 2002-2004 BOCO Inter-Telecom DC Team, All Rights Reserved##  Author(s): JiaXiaoLong#  #  Creation Date: 2002/12/16##  Last update Date: 2003/02/24##  Description:This module is used to create task files from collection#		information config file.################################################################################use Env qw(HOME NPM_HOME);use XML::Simple;use Time::ParseDate;use Date::Format;use Data::Dumper;use lib "$NPM_HOME/common/modules";use DBIs;################################################################  Function:new##  Input:##  Output:##  Return value:##  Description:###############################################################sub new{	my $pkg=shift;	my $prepareColInf=bless{},$pkg;	return $prepareColInf;} ################################################################  Function:create_taskfile_list##  Input: collection information config ($col_infcfg), task id##  Output:##  Return value:return_code: 1 success, -1 error#		ref of task files list##  Description:###############################################################sub create_taskfile_list{	my ($pkg,$col_infcfg,$task_id)=@_;	#-----------------------------------	# Read Colinf_cfg file and Create env hash.	#-----------------------------------	my ($CN_Var,$PN_Var,$T_Var,$C_Var,$task_file,@taskfile_list);	my ($vendor_path,$vendor_module);	my $colinf_ref = XMLin($col_infcfg);	$CN_Var = $colinf_ref->{"Prime_col_inf"}{"Child_Ne_Var"};	$PN_Var = $colinf_ref->{"Prime_col_inf"}{"Parent_Ne_Var"};	$T_Var = $colinf_ref->{"Prime_col_inf"}{"Task_Information"}{"Task_Var"};	$task_file = $colinf_ref->{"Prime_col_inf"}{"Task_Information"}{"Task_Config"};	$vendor_path = $colinf_ref->{"Prime_col_inf"}{"Vendor_path"};	$vendor_module = $colinf_ref->{"Prime_col_inf"}{"Vendor_module"};	$vendor_path ="<Vendor_path>".$vendor_path."</Vendor_path>\n";	$vendor_module ="<Vendor_module>".$vendor_module."</Vendor_module>\n\n";	$C_Var->{"HOME"}=$HOME;	$C_Var->{"NPM_HOME"}=$NPM_HOME;	$C_Var->{"TASK_ID"}=$task_id;	$C_Var->{'DATE'}=time2str("%Y%m%d",parsedate("today"));	$C_Var->{'TIME'}=time2str("%T",parsedate("today"));	#-----------------------------------	# Create TASK Template File	#-----------------------------------	open (READ,$col_infcfg) || die "Can't open file:$col_infcfg\n"."File: ".__FILE__."Line ".__LINE__."\n";	my $col_inf_lines;	while (<READ>) {                $col_inf_lines .= $_;        };	close(READ);        $col_inf_lines =~ /(\<Task_Information.*\<\/Task_Information\>)/s;	my $task_template_lines = "<TASK_FILE>\n\t".$vendor_path."\t$vendor_module\t".$1."\n</TASK_FILE>\n";	foreach my $t_var_key (keys %$T_Var) {		foreach my $pn_var_key (keys %$PN_Var) {			my $pn_var_value = $PN_Var->{$pn_var_key};			$T_Var->{$t_var_key} =~ s/\[PN_VAR:$pn_var_key\]/$pn_var_value/ig;			$task_template_lines =~ s/\[PN_VAR:$pn_var_key\]/$pn_var_value/ig;			$task_file =~ s/\[PN_VAR:$pn_var_key\]/$pn_var_value/ig;		} 		foreach my $c_var_key (keys %$C_Var) {			my $c_var_value = $C_Var->{$c_var_key};			$T_Var->{$t_var_key} =~ s/\[$c_var_key\]/$c_var_value/ig;			$task_template_lines =~ s/\[$c_var_key\]/$c_var_value/ig;			$task_file =~ s/\[$c_var_key\]/$c_var_value/ig;		}		$task_template_lines =~ s/\[T_Var:$t_var_key\]/$T_Var->{$t_var_key}/ig;		$task_file =~ s/\[T_Var:$t_var_key\]/$T_Var->{$t_var_key}/ig;	}	#-------------------------	# Write Task_file list 	#-------------------------	DBIs::Trace("Task file :\n");	$CN_Var = $pkg->Format_HashStruc($CN_Var);	#------------------------------------------------	# in this case, we needn't collect child_ne 	# and the taskfile is only for OMC 	#------------------------------------------------	if (!defined (%$CN_Var)) {		DBIs::Trace("$task_file\n");		open (WRITE,">$task_file") or die "Can't open Taskfile: $task_file ! File: ".__FILE__." Line ".__LINE__."\n";		print WRITE $task_template_lines;                close(WRITE);                eval{XMLin($task_file)};                if ($@) {                        DBIs::Trace("File: $task_file is ERROR for XMLin() !!!\n");                }                push @taskfile_list,$task_file;		return (1,\@taskfile_list);	}	foreach my $cn_var_key (keys %$CN_Var) {		my $task_file_tmp = $task_file;		my $task_line_tmp = $task_template_lines;		my $cn_var_value = $CN_Var->{$cn_var_key};		foreach my $key (keys %$cn_var_value) {			my $value = $cn_var_value->{$key};			$task_line_tmp =~ s/\[CN_VAR:$key\]/$value/ig;			$task_file_tmp =~ s/\[CN_VAR:$key\]/$value/ig;		}		DBIs::Trace("$task_file_tmp\n");		if ($task_line_tmp =~ /\[(\w+)VAR:(\w+)\]/i) {			if ($1 !~ /A/i) {				print "Strange $1VAR: $2 !!! \n\n";			}		}		open (WRITE,">$task_file_tmp") || die "Can't open file: $task_file\n"."File: ".__FILE__."Line ".__LINE__."\n";		print WRITE $task_line_tmp;		close(WRITE);		eval{XMLin($task_file_tmp)};		if ($@) {			DBIs::Trace("File: $task_file_tmp is ERROR for XMLin() !!!\n");		}		push @taskfile_list,$task_file_tmp;	}	return (1,\@taskfile_list);}################################################################  Function:move_col_inf##  Input:##  Output:##  Return value:##  Description: #################################################################sub move_col_inf{	my ($pkg,$return_code,$col_inf)=@_;    	$col_inf=~/(.*)\/new/;    	my $upper_path=$1;     	if($return_code==1){		DBIs::Trace("mv $col_inf $upper_path/success/ \n");		if(!(-d "$upper_path/success/")) {			system("mkdir $upper_path/success/");		}		system("mv $col_inf $upper_path/success/");		return(1,"success\n");	}	if($return_code==-1){		DBIs::Trace("mv $col_inf $upper_path/fail/ \n");		if(!(-d "$upper_path/fail/")) {			system("mkdir $upper_path/fail/");		}		system("mv $col_inf $upper_path/fail/");	}   	return(-1,"fail\n");}################################################################  Function: Format_HashStruc##  Input:##  Output:##  Return value:##  Description:#################################################################sub Format_HashStruc {        my ($pkg,$hash_ref) = @_;        my $hash;        if(exists $hash_ref->{'id'}){		my $value = $hash_ref->{'id'};                $hash={"$value"=>$hash_ref};                delete $hash_ref->{'id'};        }        else{                if(exists $hash_ref->{'name'}){			my $value = $hash_ref->{'name'};                        $hash={"$value"=>$hash_ref};                        delete $hash_ref->{'name'};                }                else{                        #-----------------------------------------------                        # there are more than one steps in the work flow.                        #-----------------------------------------------                        $hash=$hash_ref;                }        }        return ($hash);}sub close {        my ($pkg) = @_;        undef($pkg);        return($pkg);}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -