The "BEGIN" block will always be executed when the script is loaded and before the first (non-BEGIN) instruction is executed. It doesn't matter where the "BEGIN" block is positioned in the code -- inside or outside the while loop makes no difference -- it will only be executed once.

In order to add content at the beginning of any disk file while preserving all the original content, there really is no practical way other than to create a new file, put the newly added content at the beginning of that new file, then copy/append the contents of the existing file, then rename the new one to replace (delete) the old one.

If you want to replace the initial portion of a file (or even any non-initial portion) while preserving the portion(s) that you don't replace, that can be done, but you have to be certain that the new data being put in has the exact same byte-count as the data being replaced.

In other words, anything that involves moving the "preserved" content to a different byte offset (relative to the beginning of the file) is best done by writing a new version of the file to replace the old one.


In reply to Re^3: Elegant Way of Inserting Text at the Start of the File by graff
in thread Elegant Way of Inserting Text at the Start of the File by bichonfrise74

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.