Although dragonchild gives a good example of .., here's a more general explanation, along with the difference between .. and ...
First of all, there is use of .. in a list context: @a = 1 .. 7;
Then there's the unrelated use in a scalar context. It only makes sense in a loop.while (something) {
if (EXPRSTART .. EXPREND) {
doit();
}
}
is equivalent to:$inmatch = 0;
while (something) {
if (!$inmatch && EXPRSTART) {
$inmatch = 1;
}
if ($inmatch) {
doit();
}
if ($inmatch && EXPREND) {
$inmatch = 0;
}
}
Okay? Now for three dots:while (something) {
if (EXPRSTART ... EXPREND) {
doit();
}
}
is equivalent to:$inmatch = 0;
while (something) {
$wasinmatch = $inmatch;
if (!$inmatch && EXPRSTART) {
$inmatch = 1;
}
if ($inmatch) {
doit();
}
if ($wasinmatch && EXPREND) {
$inmatch = 0;
}
}
Subtle difference. To see it in action, compare:while (<>) { print if /A/ .. /B/ }
with while (<>) { print if /A/ ... /B/ }
on this input file Here's some text before
Some text with an A
some lines in the middle 1
some lines in the middle 2
some lines in the middle 3
Some text with a B
some useless lines 1
some useless lines 2
some useless lines 3
A line with both an A and a B
some lines after the line with both 1
some lines after the line with both 2
some lines after the line with both 3
Once again, text with a B
more useless lines 1
more useless lines 2
more useless lines 3
|