define { destination = "/u90/gvc_archive/new"; runonce = "port100"; } #####*******##### ## default macros #####*******##### macro arbor_ama { regex = "/F.*?-P.*?\.(\d+)\.ama/"; dfield = "$1"; } macro dex { regex = "/^P.*?_DSC_.*?\.(\d+)\.ama$/"; dfield = "$1"; } macro rpt { regex = ""; dfield = ""; } macro rptnull { regex = ""; dfield = ""; } macro rtcd_everything { regex = "/.*?/"; dfield = "2__"; } macro arbor1_1 { regex = "/^F.*?_D(\d+)_.*?PRI_1_1\.ama$/"; dfield = "$1"; } macro arbor { regex = "/^F.*?\.(\d+)\.ama$/"; dfield = "$1"; } macro usl1 { regex = "/^USL_.*?_(\d{6})_.*?$/"; dfield = "$1"; } macro usl2 { regex = "/^USL_.*?_(\d{6})$/"; dfield = "$1"; } macro uslnull { regex = "/^USL.*?$/"; dfield = "NULL"; } #####*******##### ## Individual Rulesets here #####*******##### ## port 11 # P11_02-04-02_01:02:00_020001.030001.41062.01.2 #10!11,41,61,77,85!rtcd_everything <-- old way rule 10 { port = "port11,port41, port61,port77,port85"; # space in here on purpose regex = ; # left blank on purpose dfield = "NULL"; macro = "rtcd_everything"; } rule 60 { port = "87"; # didn't use "port##" on purpose regex = "/F.*?\-P.*?_FCC_(\d+)_.*?\.cdr/" dfield = "$1"; macro = "usl1"; macro = "usl2"; } ## port 100 stuff # P040_PRI_487460_487559.0204.ama # 100!100!/P\d+_(PRI|SEC|TPP)_.*?\.(\d{4})\.ama/!$2 <-- old rule 100 { port = "100"; regex = /P\d+_(PRI|SEC|TPP)_.*?\.(\d{4})\.ama/; dfield = "$2"; } #### #!/usr/local/bin/perl -w # test parser prior to plugging into larger script # to replace the old function. use strict; use Env; my $file = "$HOME/archive_bin/configs/dtfr_archiver.conf"; my ($class,$type,$var,$rval,%config); open(F,$file) or die("Can't open it: $!\n"); while ( ) { chomp; my $current_line = $_; my $ok = "^(macro|define|rule)"; next if ( /^#/ ); # skip comments next if ( /^\n/ ); # skip newlines and all only-spaces my $check = (/$ok\s+\w+\s+\{/ .. /^\}/); do { if ( $check == 1 ) { $current_line =~ /^([a-z]+)/; $class = $1; print "class: $class\n"; # do more checking here $current_line =~ /^.*? (\w+)\s+\{/; # do more checking here $type = $1 # do more checking here print "type: $type\n\n"; # do more checking here } if ( $check !~ /EO/ and $check > 1 ) { if ( $current_line =~ /=/ ) { ($var,$rval) = split(/=/,$_); $var =~ tr/ //d; $rval =~ tr/" ;//d; print "var: $var and rval: $rval\n"; #$config{$type}{$var} = $rval; } } } if $check; } #### class: macro type: rtcd_everything var: regex and rval: /.*?/ var: dfield and rval: 2__ class: macro type: arbor1_1 var: regex and rval: /^F.*?_D(\d+)_.*?PRI_1_1\.ama$/ var: dfield and rval: $1 class: macro type: arbor var: regex and rval: /^F.*?\.(\d+)\.ama$/ var: dfield and rval: $1 class: macro type: usl1 var: regex and rval: /^USL_.*?_(\d{6})_.*?$/ var: dfield and rval: $1 class: macro type: usl2 var: regex and rval: /^USL_.*?_(\d{6})$/ var: dfield and rval: $1 class: macro type: uslnull var: regex and rval: /^USL.*?$/ var: dfield and rval: NULL