Can you give an example file that you parse? I would say you could just change the input record separator to paragraph mode eg
local $/ = ""; when you find "set private-key ", then read one more time with
<DATA>. I am not sure if enc data ends with '
[...]' or "
\n\n" or
'"' or what.
please post an example file.
#here is a small test i did with the examples given in OP
use strict;
use warnings;
while(<DATA>){
if ( /set private-key/){
print "\nsetting input seperator to paragraph mode\n";
local $/ = ""; #record separator will change itself back to de
+fault AFTER leaving the if block
print "skipping encrypted data\n";
<DATA>;
print "encrypted data skipped and should not be printed !\n\n"
+;
next;
}
print if /\w+/;
}
__DATA__
random data
more random data
blah blah
one last test BEFORE! encrypted data!
set private-key "-----BEGIN ENCRYPTED PRIVATE KEY-----
sdfkjghsdlkhfgldkfjghldkfjgh
sdflkjgdfgl;kd;lfkgjdlfkgjd;l
dlkjfghlkdfjghldskfjhgldskfjhg
this is AFTER encrypted data
more rand0m data
this is the last test AFTER! encrypted data.
The idea here is to read the file/s one line at a time until you find the desired string. then once you find that string, change the input record separator to stop at the end of the enc data (if possible). if enc data is always the same length, then you could find the desired string and then read that static length every time.
EDIT: Cleaned up post... a little.