Frage

Beim Lesen dieser Perl: extract Reihen von 1 bis n (Windows) ich verstand nicht, das Flip-Flop-Operator / readline--Gegenstück.

perl -nE 'say $c if $c=1..3' my_file 
  

1 |   2
  3E0

Könnte jemand erklären mir mehr detailliert, wo diese Ausgabe herkommt?

War es hilfreich?

Lösung

perlop :

  

Im skalaren Kontext „..“ kehrt ein   boolean Wert. Der Betreiber ist   bistabil, wie ein Flip-Flop, und   emuliert den Zeilenbereich (Komma)   Betreiber von sed , awk und verschiedene   Redakteure. Jeder „..“ Operator unterhält   sein eigener boolean Zustand, auch über   ein Unterprogramm aufruft, um das enthält   es. Es ist falsch, solange seine linke   Operand false. Nach links   Operand wahr ist, ist der Bereich Operator   Aufenthalte wahr, bis der rechte Operand ist   wahr, wonach der Bereichsoperator   wird wieder falsch. Es muss nicht sein   falsch bis zum nächsten Mal, wenn der Bereich   Betreiber ausgewertet. Es kann den Test   rechte Operanden und auf dem falschen worden   gleiche Auswertung es wahr wurde (wie in    awk ), aber es gibt immer noch wahr einmal.   Wenn Sie nicht möchten, dass es das Recht testen   Operanden, bis die nächste Bewertung, wie   in sed , nur drei Punkte verwenden ( "...")   anstelle von zwei. In allen anderen Grüßen,   "..." verhält sich wie ".." der Fall ist.

     

Der rechte Operand wird nicht ausgewertet   während der Bediener in der „falschen“   Zustand, und der linke Operand ist nicht   bewertet, während der Bediener in der ist   "True" Zustand. Der Vorrang ein   senken wenig als || und &&. Der Wert   zurückgeführt wird, entweder die leere Zeichenfolge   für falsche oder eine Sequenznummer   (Beginnend mit 1) für wahr. Das   Sequenznummer wird zurückgesetzt für jede   Bereich anzutreffen. Die letzte Sequenz   Zahl in einem Bereich hat die Zeichenfolge „E0“   angehängt, um es , die nicht beeinflussen   sein numerischer Wert, gibt Ihnen aber   etwas zu suchen, wenn Sie wollen   ausschließen den Endpunkt. Sie können ausschließen   der Anfangspunkt für die durch das Warten   Sequenznummer größer als 1 ist.

     

Wenn einer der Operanden von skalaren „..“ ist ein   konstanter Ausdruck, daß Operand   als wahr, wenn sie gleich (==)   auf die Eingangszeilennummer Strom (der   $. Variable).

(Hervorhebung hinzugefügt)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top