#!/usr/bin/perl # Anvil Concatenation # # Concatenates two non-overlapping .anvil files that share the same timeline. # # Usage: anvilcat.pl file_one.anvil file_two.anvil output.anvil # # Chris Osborn # cosborn@ldc.upenn.edu # # FORM Project, Linguistic Data Consortium # University of Pennsylvania # # http://www.ldc.upenn.edu/Projects/FORM/ # print("\n"); open(ONE, "./$ARGV[0]"); open(TWO, "./$ARGV[1]"); open(OUT, ">./$ARGV[2]"); open(TEMP, ">./temp"); #extract lines from tracks of second file while(){ if(/track name/){ ($trackName) = ($_ =~ /track name="(.*?)"/); #print "$lastIndex{$trackName}:$index\n"; $trackName =~ s/ //g; $num = 0; }elsif($_ =~ //); $trackHash{$trackName}[$num] = $temp; $num++; }elsif($_ =~ /<\/el>/){ ($temp) = ($_ =~ /^(.*?)>/); $trackHash{$trackName}[$num] = $temp; $num++; }elsif($_ =~ /.*?)>/); $trackHash{$trackName}[$num] = $temp; $num++; } } close(TWO); #insert saved lines into first file, copy to new output while(){ if(/track name/){ ($trackName) = ($_ =~ /track name="(.*?)"/); $trackName =~ s/ //g; $lastIndex{$trackName} = 0; $elements{$trackName} = 0; }elsif(/){ if(/track name/){ ($trackName) = ($_ =~ /track name="(.*?)"/); $trackName =~ s/ //g; }elsif(/<\/track/){ for($i=(@{$trackHash{$trackName}}-1); $i >= 0; $i--){ $_ =~ s/^/$trackHash{$trackName}[$i]>\n/g; } } print OUT $_; } close(TEMP2); close(OUT); unlink("./temp");