Toán tử flip-flop trong Perl đánh giá là true khi toán hạng bên trái là đúng và tiếp tục đánh giá là true cho đến khi toán hạng bên phải là đúng. Toán hạng trái và phải có thể là bất kỳ dạng biểu thức nào, nhưng thường được sử dụng với các regex.
Với regexes, nó rất hữu ích cho việc tìm kiếm tất cả các dòng giữa hai điểm đánh dấu. Dưới đây là một ví dụ đơn giản cho thấy cách hoạt động:
use Modern::Perl;
while (<DATA>)
{
if (/start/ .. /end/)
{
say "flip flop true: $_";
}
else
{
say "flip flop false: $_";
}
}
__DATA__
foo
bar
start
inside
blah
this is the end
baz
Các lật điều hành flop sẽ đúng đối với tất cả các dòng từ start
cho đến khi this is the end
.
Phiên bản hai chấm của toán tử cho phép regex thứ nhất và thứ hai cho cả hai đối sánh trên cùng một dòng. Vì vậy, nếu dữ liệu của bạn trông như thế này, chương trình trên sẽ chỉ có đúng đối với dòng start blah end
:
foo
bar
start blah end
inside
blah
this is the end
baz
Nếu bạn không muốn regexes đầu tiên và thứ hai để phù hợp với cùng một dòng, bạn có thể sử dụng ba phiên bản chấm: if (/start/ ... /end/)
.
Lưu ý rằng cẩn thận không nên nhầm lẫn giữa nhà điều hành flip-flop với toán tử dải. Trong ngữ cảnh danh sách, ..
có chức năng hoàn toàn khác: nó trả về một danh sách các giá trị tuần tự. ví dụ.
my @integers = 1 .. 1000; #makes an array of integers from 1 to 1000.
Tôi không quen với Ruby, nhưng Lee Jarvis's link cho thấy rằng nó hoạt động tương tự.
Nguồn
2013-01-22 12:29:32
Bạn chứ không phải nghĩa regexps trong dep Lê? – choroba
Vâng, đó là những gì tôi thực sự nên hỏi :) – samuil