Perl'teki flip-flop işleci, sol işlenen doğru olduğunda true olarak değerlendirir ve sağ işleneni doğru olana kadar doğruyu değerlendirmeye devam eder. Sol ve sağ işlenen herhangi bir ifade olabilir, ancak çoğu zaman regex ile kullanılır.
Normal ifadelerle, iki işaretçi arasındaki tüm satırları bulmak yararlıdır. Şu şekilde çalışır gösteren basit bir örnek:
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
Flip flop operatörü start
den this is the end
kadar bütün hatlar için geçerli olacak.
Operatörün iki nokta sürümü, her ikisi de aynı satırda eşleşecek birinci ve ikinci normal ifadelere izin verir. Aynı çizgiyi maç için birinci ve ikinci Regexes istemiyorsanız
foo
bar
start blah end
inside
blah
this is the end
baz
, üçümüzü kullanabilirsiniz: Veri böyle görünüyordu Yani, eğer yukarıdaki program sadece hat start blah end
için de geçerli olacağı nokta sürümü: if (/start/ ... /end/)
.
Flip-flop operatörünü mesafe operatörü ile karıştırmamak için dikkatli olunmalıdır. Liste bağlamında, ..
tamamen farklı bir işlevi vardır: bir sıralı değer listesi döndürür. Örneğin.
my @integers = 1 .. 1000; #makes an array of integers from 1 to 1000.
Ben Ruby aşina değilim, ama Lee Jarvis's link o benzer şekilde çalışır düşündürmektedir.
while DATA.gets
if $_ =~ /start/ .. $_ =~ /end/
puts "flip flop true: #{$_}"
else
puts "flip flop false: #{$_}"
end
end
__END__
foo
bar
start
inside
blah
this is the end
baz
Daha deyimsel yakut:
DATA.each do |line|
if line =~ /start/ .. line =~ /end/
puts "flip flop true: #{line}"
else
puts "flip flop false: #{line}"
end
end
__END__
foo
bar
start
inside
blah
this is the end
baz
rezervasyon yapmaya İfadelerinin ifade ediyor İşte – choroba
Evet, gerçekten sormam gereken şey budur :) – samuil