#!/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 () { if ($_ =~ /my \$Installed = 0;/) { push @file, "my \$Installed = 1;\n"; } elsif ($_ =~ /\#\#\# Begin Local Modules/) { do { push(@modules, $1) if($_ =~ /use\s+(\S+)\s*;/); $_ = ; } 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 () { push(@file, $_) if ($_ !~ /$modExp/); } close MOD; } ### Reset the package push @file, "package main;\n" } else { push(@file, $_); } } print @file;