Forum: PC-Programmierung Perl logische Operationen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Robbie (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich möchte in einer Text Datei mit einem Perl Ausdruck bestimmte Zeichen 
finden

Der Ausdruck
 [^\x20-\x7F] 

ignoeriert druckbare ASCII Zeichen, zeicht aber Zeilensprünge an. Diese 
möchte ich auch ausschließen. WIe bekomm ich das hin?
 [^\x20-\x7F] AND [^\x0A]
hat nicht funktioniert...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Nun, erstens kannst du in einer character class natürlich mehrere 
Bereiche aufführen:
[^\x0A\x20-\x7F]

Zweitens, wenn du logische Operatoren mit Worten benutzen willst, 
brauchst du
use English;

Standardmäßig werden logische Operatoren wie in C benutzt: && ||

Drittens, der "englische" logische Operator für "und" heiß "and", nicht 
"AND".

Viertens, du kannst natürlich nur komplette logische Operationen 
verknüpfen, also
$string =~ [^\x20-\x7F] and $string =~ [^\x0A]

von leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Standardmäßig werden logische Operatoren wie in C benutzt: && ||
>
> Drittens, der "englische" logische Operator für "und" heiß "and", nicht
> "AND".

Wobei 'and' usw. eine andere (kleinere) precedence haben, du kannst die 
nicht einfach austauschen.

$ perldoc perlop

leo

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
leo schrieb:
> Wobei 'and' usw. eine andere (kleinere) precedence haben, du kannst die
> nicht einfach austauschen.

Guter Hinweis - war mir nicht klar (aber als C-Programmierer bin ich 
auch kein Fan von "use English").

von leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:

Das haette ich fast ueberlesen:

> Zweitens, wenn du logische Operatoren mit Worten benutzen willst,
> brauchst du

> use English;

Nop. Das hat nichts mit 'and' zu tun.

leo

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
leo schrieb:
> Nop. Das hat nichts mit 'and' zu tun.

OK, nachgelesen, stimmt.

Dann ergänze ich: habe weder "use English" noch die englischen logischen 
Operatoren je in meinem Perl-Leben benutzt. ;-)

von leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Dann ergänze ich: habe weder "use English" noch die englischen logischen
> Operatoren je in meinem Perl-Leben benutzt. ;-)

Die low-precedence logischen Operatoren sind nuetzlich, e.g. fuer 
Fehlerbehandlung.
S. 
https://stackoverflow.com/questions/1136583/what-is-the-difference-between-and-or-in-perl

leo

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Naja, es stiftet aber auch Verwirrung. Ich würde da wohl sinnvolle 
Klammerung bevorzugen. Man muss ja auch nicht unbedingt alles in eine 
Zeile quetschen, nur weil es auch in eine Zeile gequetscht werden 
kann. ;-)

(Das ist ein Phänomen, das ich durchaus auch bei manchem 
Python-Programmierer sehe.)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.