#!/opt/local/bin/perl # ASSUMPTIONS: source files are formatted correctly--cu001 on first line. # dirs my $processingDir="/www/data/cu/libraries/inside/projects/apis/berkeley/processing"; my $outputDir="$processingDir/intake_files"; my $holdingsDir="$processingDir/holdings_files"; my $suppDir="$processingDir/supp_files"; # files my $holdAppendLogFile="$processingDir/logs/holdings_append_log.txt"; my $suppAppendLogFile="$processingDir/logs/supp_append_log.txt"; # filename regexp my $holdRegexp="berkeley_holdings[0-9]+\$"; my $suppRegexp="berk_supp[0-9]+\$"; appendData($suppDir, $suppAppendLogFile, $suppRegexp); appendData($holdingsDir, $holdAppendLogFile, $holdRegexp); sub appendData { my ($sourceDir,$sourceAppendLogFile,$regexp)=@_; print "Processing files of type $regexp in $sourceDir ($sourceAppendLogFile is logfile)...\n"; my @files=(); my $file=""; my $marker_line=""; my $line=""; my $cu001=""; opendir(DIR, $sourceDir); @files = sort(grep(/$regexp/, readdir(DIR))); closedir(DIR); # open append error file open(HLOG,">$sourceAppendLogFile") || die "ERROR: Couldn't create $sourceAppendErrorFile."; foreach $file (@files) { $sourceFile="$sourceDir/$file"; open(FILE,"<$sourceFile")||die "ERROR: Couldn't open $file."; # get cu001 $line=; $line =~ m/^cu001 +\| [0-9]+ \| ([a-z]+\.apis\.[p]?[0-9]+) *$/; $cu001=$1; if (!$cu001) { print HLOG "ERROR: no cu001 found for $sourceFile! Line reads: #$line\n#"; next; } # get source data $sourceData=""; while ($line=){ $sourceData .= $line; } # get file to append to $outputFile="$outputDir/$cu001"; if ( -f $outputFile ) { print HLOG "appending to $outputFile...\n"; open(OUTFILE,">>$outputFile"); # append newline in case intake file doesn't end with one or has garbage at the end print OUTFILE "\n"; print OUTFILE $sourceData; close(OUTFILE); } else { print HLOG "ERROR: $outputFile not a file!\n"; } close(FILE); } close(HERR); }