in reply to Re^5: When doesn't the flip-flop operator work in all scalar contexts?
in thread Why doesn't the flip-flop operator work in all scalar contexts?

First of all that doesn't fit the man page

How does it not fit that quoted statement?
flip at 1? yes flop at 1? yes -> Would return false, but must return true once. flip at 2? yes flop at 2? yes -> Would return false, but must return true once. flip at 2? yes flop at 2? yes -> Would return false, but must return true once. flip at 2? yes flop at 2? yes -> Would return false, but must return true once. flip at 2? yes flop at 2? yes -> Would return false, but must return true once.

Secondly if you look at my third example above, [...] So it can't be a case of flip and flop on the same round, there never seems to be a flip

It flips, but it never flops because $y is always false.

my $x=1; my $y=0; for(1,2,3,4,5) { next if (printf("flip at %s? %s\n",$_,$x?'yes':'no'),$x) .. (printf("flop at %s? %s\n",$_,$y?'yes':'no'),$y); print "$_\n"; }
flip at 1? yes flop at 1? no -> Returns true. flop at 2? no -> Returns true. flop at 3? no -> Returns true. flop at 4? no -> Returns true. flop at 5? no -> Returns true.

Update: Truth tables for flip/flop:

..
StateFlipFlopNew StateReturns
outyesyesouttrue
outyesnointrue
outno[not executed]outfalse
in[not executed]yesoutfalse
in[not executed]nointrue

...
StateFlipFlopNew StateReturns
outyes[not executed]intrue
outno[not executed]outfalse
in[not executed]yesoutfalse
in[not executed]nointrue

Replies are listed 'Best First'.
Re^7: When doesn't the flip-flop operator work in all scalar contexts?
by jethro (Monsignor) on Oct 02, 2008 at 21:12 UTC
    Yes. you are right. I seem to have ignored the inverted sense done by the next.