Thread Erlaubte "Klammerzeichen" bei Regexen und anderen quote-like-Operatoren (6 answers)
Opened by GwenDragon at 2021-01-07 16:23

haj
 2021-01-09 02:23
#193096 #193096
User since
2015-01-07
527 Artikel
BenutzerIn

user image
Ich habe jetzt mal ein paar Testfälle als Kommentar an das GitHub-Issue angefügt. Bemerkenswert: GitHubs eigenes Highlighting bekommt die meisten Fälle korrekt hin.
Hier im Forum sieht das auch ganz interessant aus: Lesbar ist es. Nur mit Quotes und alphanumerischen Begrenzern kommt er nicht klar, und der "Normalfall" s/a/b/ sieht anders als als die anderen üblichen Zeichen und die paarweisen vom Typ s(a)(b).
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use 5.020;
use strict;
use warnings;

sub saeaoagr () {
    print "foo";
    qr/x/;
}

# Those are the most popular
say ("fee" =~ s/e/o/gr  . "bar");
say ("fee" =~ s!e!o!gr  . "bar");
say ("fee" =~ s|e|o|gr  . "bar");
say ("fee" =~ s{e}{o}gr . "bar");
say ("fee" =~ s(e)(o)gr . "bar");
say ("fee" =~ s[e][o]gr . "bar");

# Those have syntactic significance
say ("fee" =~ s?e?o?gr  . "bar");
say ("fee" =~ s'e'o'gr  . "bar");  # ' # quote to fix

# Those are valid, but infrequent (and weird)
say ("fee" =~ s"e"o"gr  . "bar");  # " # quote to fix
say ("fee" =~ s aeaoagr . "bar");
say ("fee" =~ s#e#o#gr  . "bar");

# Those must not be confused with the previous two
say ("fee" =~ saeaoagr  . "bar");  # calls saeaoagr()
say ("fee" =~ s #e#o#gr              that's a comment, not a regex
     (e)(o)gr . "bar");            # and here's the regex.

View full thread Erlaubte "Klammerzeichen" bei Regexen und anderen quote-like-Operatoren