infix ff
Documentation for infix ff
assembled from the following types:
language documentation Operators
From Operators
(Operators) infix ff
sub infix:<ff>(Mu , Mu )
Also called the flipflop operator, compares both arguments to $_
(that is, $_ ~~ $a
and $_ ~~ $b
). Evaluates to False
until the left-hand smartmatch is True
, at which point it evaluates to True
until the right-hand smartmatch is True
.
In effect, the left-hand argument is the "start" condition and the right-hand is the "stop" condition. This construct is typically used to pick up only a certain section of lines. For example:
my $excerpt = q:to/END/; Here's some unimportant text. =begin code This code block is what we're after. We'll use 'ff' to get it. =end code More unimportant text. END my @codelines = gather for $excerpt.lines { take $_ if "=begin code" ff "=end code" } # this will print four lines, starting with "=begin code" and ending with # "=end code" say @codelines.join("\n");
After matching the start condition, the operator will then match the same $_
to the stop condition and act accordingly if successful. In this example, only the first element is printed:
for <AB C D B E F>
If you only want to test against a start condition and have no stop condition, *
can be used as such.
for <A B C D E>
For the sed
-like version, which does not try $_
on the stop condition after succeeding on the start condition, see fff.
This operator cannot be overloaded, as it's handled specially by the compiler.