http://www.perlmonks.org?node_id=137840


in reply to Re: Thoughts on Perl6 - Love it? Hate it?
in thread Thoughts on Perl6 - Love it? Hate it?

I don't want to have to do $filehandle.autoflush(1) instead of $|++.

Ugghhh! $++ doesn't do what you think. You think $| == 0 and that $|++ makes $|==1. Sure IFF $|==0. But what when some other fool does $|++. Then your $|++ doesn't do anything. Even worse $|-- doesns't set $|==0, because you blindly did $++. Now maybe your think this turns it into some sort of recursive lock type thing. No! because someone could have done $|=0 or $|=1 in another part or the code, cuz it's is the RightThing(tm).

Just remember that $|++ is a SIN. Don't do it.

BTW, what does $|==-1 even mean?

  • Comment on Re: Re: Thoughts on Perl6 - Love it? Hate it?

Replies are listed 'Best First'.
Re: Re: Re: Thoughts on Perl6 - Love it? Hate it?
by blakem (Monsignor) on Jan 11, 2002 at 01:49 UTC
    $| is magic. It is always either 0 or 1. $|++ sets its value to 1 no matter what its original value was.

    However, $|-- is a bit trickier. $|-- toggles the value of $|. So, its actually a lot like $| = !$_

    % perl -le 'print $| and $|++ for 1..5;' 0 1 1 1 1 % perl -le 'print $| and $|-- for 1..5;' 0 1 0 1 0

    -Blake

(ichimunki) Re x 3: Thoughts on Perl6 - Love it? Hate it?
by ichimunki (Priest) on Jan 11, 2002 at 01:42 UTC
    'perldoc perlvar'

    The only values that count here are 0 and non-zero.
      Consider the tao of $|--