buildInstallVersion.pl
1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/perl
# STMVALIDATOR
# Author: Jon Fiscus, Jerome Ajot
#
# This software was developed at the National Institute of Standards and Technology by
# employees of the Federal Government in the course of their official duties. Pursuant
# to title 17 Section 105 of the United States Code this software is not subject to
# copyright protection and is in the public domain. RTTMVALIDATOR is an experimental system.
# NIST assumes no responsibility whatsoever for its use by other parties, and makes no
# guarantees, expressed or implied, about its quality, reliability, or any other
# characteristic. We would appreciate acknowledgement if the software is used.
#
# THIS SOFTWARE IS PROVIDED "AS IS." With regard to this software, NIST MAKES NO EXPRESS
# OR IMPLIED WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING MERCHANTABILITY,
# OR FITNESS FOR A PARTICULAR PURPOSE.
use strict;
my $exe = "stmValidator-main.pl";
my @modules = ();
my @file = ();
open EXE,"<$exe" || die "Failed to open executable $exe";
while (<EXE>)
{
if ($_ =~ /my \$Installed = 0;/)
{
push @file, "my \$Installed = 1;\n";
}
elsif ($_ =~ /\#\#\# Begin Local Modules/)
{
do
{
push(@modules, $1) if($_ =~ /use\s+(\S+)\s*;/);
$_ = <EXE>;
}
while ($_ !~ /\#\#\# End Local Modules/);
my $modExp = "use\\s+(".join("|",@modules).")";
### Insert the modules
foreach my $mod(@modules)
{
open (MOD, "<$mod.pm") || die "Failed to open $mod.pm";
while (<MOD>)
{
push(@file, $_) if ($_ !~ /$modExp/);
}
close MOD;
}
### Reset the package
push @file, "package main;\n"
}
else
{
push(@file, $_);
}
}
print @file;