In diesem einfachen Beispiel hat es funktioniert.
Auf deiner verwiesen Seite habe ich zwei Alternativen gefunden:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
given ( $c ) {
when ( 'a' ) {
say 'a';
}
when ( 'b' ) {
say 'b';
}
when ( $extra == 1 and $c eq 'd' ) {
say 'd';
}
when ( $extra == 1 and $c eq 'e' ) {
say 'e';
}
when ( 'z' ) {
say 'z';
}
default {
say 'something else';
}
}
Diese Art finde ich schwerer zu warten und ist vermutlich langsamer.
Die zweite Alternative:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
given ( $c ) {
when ( 'a' ) {
say 'a';
}
when ( 'b' ) {
say 'b';
}
when ( $extra == 1 ) {
when ( 'd' ) {
say 'd';
}
when ( 'e' ) {
say 'e';
}
continue;
}
when ( 'z' ) {
say 'z';
}
default {
say 'something else';
}
}
Dabei finde ich, dass man mit einem
if Statement die Stelle schneller findet/besser erkennen kann. Außerdem kann man das
continue nicht vergessen.