ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/DGele/PhysicsTools/PatAlgos/scripts/patReplaceFast.pl
Revision: 1.2
Committed: Tue Oct 20 17:43:06 2009 UTC (15 years, 6 months ago) by dgele
Content type: application/x-perl
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
State: FILE REMOVED
Log Message:
remove

File Contents

# Content
1 #!/bin/env perl
2 #
3 # Replaces for fast simulation
4 #
5 # Usage: $0 <file> <replaces file>
6 # Replaces in <file> from <replaces file>
7
8 use strict;
9
10 die "Usage: $0 <file> <replaces>\n" if ( @ARGV != 2 );
11
12 my $cfgFile = $ARGV[0];
13 my $replaceFile = $ARGV[1];
14
15 my %replaces;
16
17 # Get list of replaces
18 open(IN,$replaceFile) or die "Couldn't open $replaceFile: $!";
19 while( <IN> ) {
20 if ( /replace\s+(\S+)(\s*=.*)[#|\/\/]?/ ) {
21 my $key = $1;
22 my $value = $2;
23 # Check for multi-line value
24 while ( &countBraces($value) > 0 ) {
25 my $line = <IN>;
26 $value .= $line;
27 }
28 $replaces{$key} = $value;
29 }
30 }
31 close(IN);
32
33 # Open temporary file
34 my $temp = $cfgFile.".tmp";
35 open(TEMP,">$temp") or die "Couldn't open $temp: $!";
36
37 # Scan cfgfile and replace
38 open(CFG,$cfgFile) or die "Couldn't open $cfgFile: $!";
39 while ( <CFG> ) {
40 chomp();
41 my $line = $_;
42 my $matched = 0;
43 foreach my $replace ( keys %replaces ) {
44 next if ( !$replaces{$replace} );
45 if ( $line =~ /$replace/ ) {
46 print TEMP "replace ".$replace.$replaces{$replace}."\n";
47 $replaces{$replace} = 0;
48 ++$matched;
49 last;
50 }
51 }
52 if ( !$matched ) {
53 print TEMP $line."\n";
54 }
55 }
56 close(CFG);
57
58
59 # Add missing items at the end of file (things that are only replaced in FastSim)
60 # Print header
61 print TEMP <<HEADER
62 ############################
63 # Fast simulation replaces #
64 ############################
65 HEADER
66 ;
67 foreach my $replace ( keys %replaces ) {
68 next if ( !$replaces{$replace} );
69 print TEMP "replace ".$replace.$replaces{$replace}."\n";
70 }
71 close(TEMP) or die "Couldn't close $temp: $!";
72 rename($temp,$cfgFile);
73
74
75 #______________________________________________________________________
76 # Count number of braces
77 # Opening adds one, closing removes one
78 sub countBraces {
79
80 my $string = shift;
81 my $nBraces = 0;
82 my $char = "";
83
84 while ( length($string)>0 ) {
85 $char = chop($string);
86 ++$nBraces if ( $char =~ /\{/ );
87 --$nBraces if ( $char =~ /\}/ );
88 }
89
90 return $nBraces;
91
92 }