Hi Matrixmadhan,
My problem with the script is that I want the script to run only if there's a new CDR to process which is the CDR before CDR*.tmp. The *.tmp is where the current CDR is being processed that's why I'll just process the last completed CDR (last CDR without .tmp). The list of CDRs below are the input files on the script that you've created. Please see also the whole script below. Thanks again for all the help!
-rw-r----- 1 root transfer 5243297 Oct 27 10:39 CDR3310010.4
-rw-r----- 1 root transfer 5243090 Oct 27 10:47 CDR3310010.5
-rw-r----- 1 root transfer 5242988 Oct 27 10:54 CDR3310010.6
-rw-r----- 1 root transfer 5243269 Oct 27 11:02 CDR3310010.7
drwxrwx--- 2 root stats 24576 Oct 27 11:05 stats
-rw-r----- 1 root transfer 5243317 Oct 27 11:09 CDR3310011
-rw-r----- 1 root transfer 5242906 Oct 27 11:16 CDR3310011.1
-rw-r----- 1 root transfer 5243095 Oct 27 11:23 CDR3310011.2
-rw-r----- 1 root transfer 5243178 Oct 27 11:30 CDR3310011.3
-rw-r----- 1 root transfer 5242963 Oct 27 11:38 CDR3310011.4
-rw-r----- 1 root transfer 5243133 Oct 27 11:45 CDR3310011.5
-rw-r----- 1 root transfer 5243044 Oct 27 11:52 CDR3310011.6
-rw-r----- 1 root transfer 5243054 Oct 27 11:59 CDR3310011.7
-rw-r----- 1 root transfer 272109 Oct 27 12:00 CDR3310011.tmp
#! /usr/local/bin/perl
my $c = 0;
open(OUTPUT, ">>", "output.txt");
chomp(@inputfayl = `cat cdr.txt`);
while (<@inputfayl>) {
if (/CDR/) {
$inputfayl=$_;
}
}
open inputfayl or die "Cannot open file for read :$!";
while(<inputfayl>) {
chomp;
my @arr = split(/></);
foreach (@arr) {
if( /xml version/ ) {
$c++;
print OUTPUT "\n";
}
if( />/ && /</ ) {
if( $c == 1 ) {
s/(.*)>(.*)<.*$/\1|\2/;
my($tmp1, $tmp2) = split(/\|/);
$data .= (" " . $tmp2);
printf OUTPUT "%s ", $tmp1;
}
else {
s/(.*)>(.*)<.*$/\2/;
printf OUTPUT "%s ", $_;
}
}
}
print OUTPUT "\n";
print OUTPUT "$data\n" if( /xml version/i );
}
close inputfayl;
exit 0