in reply to $|=1;

$| is documented in perlvar:
$|      If set to nonzero, forces a flush right away and
        after every write or print on the currently
        selected output channel.  Default is 0 (regardless
        of whether the channel is really buffered by the
        system or not; `$|' tells you only whether you've
        asked Perl explicitly to flush after each write).
        STDOUT will typically be line buffered if output
        is to the terminal and block buffered otherwise.
        Setting this variable is useful primarily when you
        are outputting to a pipe or socket, such as when
        you are running a Perl program under rsh and want
        to see the output as it's happening.  This has no
        effect on input buffering.  See the getc entry in
        the perlfunc manpage for that.  (Mnemonic: when
        you want your pipes to be piping hot.)

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)