A good practice (some would say, the best practice) is to limit any changes to global variables which control Perl's behaviour to as small a scope as possible, by using local $| = 1 within the scope you need it.

Of course for your small program, it really does not matter but once you use external modules whose behaviour may or may not be influenced by your twiggling of Perl's magickal variables, you should think twice.

This goes even more if you write modules or sub-routines yourself. You really do not want to export these changes beyond these modules or sub-routines.

Suppose you have written a nice logging-to-disk routine/module and you wish to make sure all lines come out as quick as possible in the right order, so you globally autoflush your print to the log file. If someone else uses your module and he writes to disk a huge number of very short lines (say only a few bytes each), then each write would be done separately which will slow down his program to a crawl and he will blame Perl for being such a slow language; never suspecting that his use of your logging-module is the culprit. Limiting your autoflush to your own sub-routine/module would avoid such thing from happening.

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James


In reply to Re: Perl only prints complete lines? by CountZero
in thread Perl only prints complete lines? 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.