Update: since nomonk else has bitten, this is what I came up with (though I'm sure there's a better way):
Before reading from DATA, save the position in the file. (The position isn't 0, because the program before the __DATA__ mark counts.)
Then, after you've read in the whole file and done the substitution to the variable, open $0 (this is the name of the script perl is running; see perlvar) with read/write access and advance to the beginning of the __DATA__ section, and print out your new data:my $begin_data = tell(DATA);
(see perldoc tell/perldoc seek for more info.)open my $source, "+<", $0 or die "Couldn't reopen source file: $!\n"; seek($source, $begin_data, 0) or die "Couldn't seek to beginning of DA +TA: $!\n"; print $begin_data $text;
If the data you are replacing with is shorter than the original, you'll have to do more to make the file position after the print be the new end of the file, but it sounds as if that isn't an issue.
In reply to Re: regex within an input file
by ysth
in thread regex within an input file
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |