L'operatore flip-flop in Perl restituisce true quando l'operando sinistro è true e continua a valutare true finché l'operando destro non è true. L'operando di sinistra e di destra potrebbe essere qualsiasi tipo di espressione, ma il più delle volte è usato con espressioni regolari.
Con regex, è utile per trovare tutte le linee tra due indicatori. Ecco un semplice esempio che mostra come funziona:
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
Il flip flop di operatore sarà vero per tutte le linee di start
fino this is the end
.
La versione a due punti dell'operatore consente la prima e la seconda regex di entrambe le corrispondenze sulla stessa linea. Così, se i dati si presentava così, il programma di cui sopra sarebbe solo vero per la linea start blah end
:
foo
bar
start blah end
inside
blah
this is the end
baz
Se non si desidera che il primo e secondo regex per abbinare la stessa linea, è possibile utilizzare i tre versione punto: if (/start/ ... /end/)
.
Si noti che occorre prestare attenzione a non confondere l'operatore flip-flop con l'operatore di intervallo. Nel contesto dell'elenco, ..
ha una funzione completamente diversa: restituisce un elenco di valori sequenziali. per esempio.
my @integers = 1 .. 1000; #makes an array of integers from 1 to 1000.
Non ho familiarità con Ruby, ma Lee Jarvis's link suggerisce che funziona in modo simile.
fonte
2013-01-22 12:29:32
Ti piuttosto dire espressioni regolari in ciabatte infradito? – choroba
Sì, è quello che dovrei davvero chiedere :) – samuil