Kind monks, please note that this question differs from the previous changing input file updated in that it is asking how to rewrite DATA. (It also is actually using the solution suggested in the previous thread.)

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.)

my $begin_data = tell(DATA);
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:
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;
(see perldoc tell/perldoc seek for more info.)

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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.