Hopefully this isn't offensive, but personally I'd rewrite your code as:
print "Enter file name and path of .ins to parse:\n";
my $filename1 = <STDIN>;
die "File $filename1 does not exist\n" unless (-e $filename1);
print "Enter file name and path of .rcs to search:\n";<br>
my $filename2 = <STDIN>;
die "File $filename2 does not exist\n" unless (-e $filename2);
open (FILE, "<$filename1) or die "Can't open file $filename1 :$!\n";
my @file = <FILE>;
close FILE;
foreach my $line (@file) {
Depending on what you're parsing here, I'd probably use a split rather than $1. YMMV.
ie: If file line was "EditorName Susan Hammel" I'd do
if ($line =~ /EditorName/) {
my @name = split(/\s+/, $line);
my $first = $name[1];
my $last = $name[2];
}
foreach my $line2 (@file) {
if ($line2 =~ /EditorCommand/) {
my @commands = split(/s+/, $line2);
shift @commands; # To remove the EditorCommand - Requires line that
+looks like "EditorCommand print paste copy"
}
open (OUTPUT, ">>test.txt");
foreach my $com (@dcommands) {
my $pattern = $word1 . ":" . $com;
my $test = in_file($pattern, $filename2);
if ($test) {
print OUTPUT "Found $pattern in $filename2 \n";
} else {
print "$pattern not in $filename2 \n";
}
}
exit;
#### SUBS ####
sub in_file {
my $pattern = shift;
my $filename2 = shift;
open INFILE, $filename2 or die "Can't open $filename2: $!\n";
my $found = 0;
while (<INFILE>) {
if (/$pattern/) {
$found = 1;
last;
}
close FILE;
return $found;
}
HTH, YMMV
'Fect