Sorry I should have clarified a bit more. Here is an example file I'm working with.
ASDF_ONE {
magic
tmp
tmp
}
ASDF_TWO {
tmp
tmp
tmp
}
string3 {
tmp
tmp
magic
}
Some sections have a common prefix, like ASDF_. I want a function in my program to scan a specific section for the magic word using an argument. The function returns true if word is found, else returns false. See code below for how I want to structure this:
use warnings;
use strict;
my $file = "/path/to/file.txt";
sub has_word {
my $arg = $_[0];
local $/;
open FILE, '<', $file;
while ( <FILE> ) {
if ( m/(ASDF_$arg \{)(.*?)magic(.*?)(\})/s ) {
close FILE;
return 1;
} else {
close FILE;
return 0;
}
}
}
sub main {
if (has_word("ONE")) {
print "ONE already has the word.\n";
} else {
print "ONE does not have the word.\n";
}
if (has_word("TWO")) {
print "TWO already has the word.\n";
} else {
print "TWO does not have the word.\n";
}
}
main;
The output I get is:
ONE already has the word.
TWO already has the word.
I think this .*? is searching for any character including the closing brace }.