Ich erkenne Dein Problem nicht wirklich; außerdem ist Dein gezeigter Ausdruck fehlerhaft.
Du hast eine unmaskierte
) da drin, die auch keine öffnende Entsprechung hat.
Wenn Du eine Liste von Alternativen hast, dann sollte diese auch von Links nach Rechts abgearbeitet werden. Und der erste Treffer ist dann auch der Treffer.
Wenn
>:( als Alternative
vor :( steht, dann sollte es auch auf ">:(" passen.
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 strict;
use warnings;
my $smiley_regex = qr{
(
>:\(
|
:\(
|
:\|
|
:drinking:
)
}x;
while ( my $line = <DATA> ) {
if ( $line =~ $smiley_regex ) {
print "$. ", $1, "\n";
}
}
__DATA__
:-)
>:(
:o)
:-/
:(
:drinking:
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!