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