I try match syntax using Syntax::Keyword::Match


Syntax::Keyword::Match is a module to enable match syntax in the current Perl by Paul Evans who is one of the current Perl Steering Councils. See perlgov about the Perl Steering Council.

Syntax::Keyword::Match Examples

Syntax::Keyword::Match Examples

Number matching

Number matching. Match syntax is similar as a switch syntax of C language.

use v5.14;
use warnings;

use Syntax::Keyword::Match;

my $n = 4;

match($n : ==) {
case(1) { say "It's one" }
case(2) { say "It's two" }
case(3) { say "It's three" }
case(4),
case(5) {
say "It's four or five"
}
default { say "It's something else" }
}

Output:

It's four or five

Compared to current Perl, it is shorter and can be written without duplication.

use v5.14;
use warnings;

my $n = 4;

if ($n == 1) {
say "It's one";
}
elsif ($n == 2) {
say "It's two";
}
elsif ($n == 3) {
say "It's three";
}
elsif ($n == 4 || $n == 5) {
say "It's four or five";
}
else {
say "It's something else";
}

For integers, performance optimization may also be possible using a jump table or a binary tree.

String matching

String matching. Match syntax has also string matching.

use v5.14;
use warnings;

use Syntax::Keyword::Match;

my $n = 'a4';

match($n : eq) {
case('a1') { say "It's one" }
case('a2') { say "It's two" }
case('a3') { say "It's three" }
case('a4'),
case('a5') {
say "It's four or five"
}
default { say "It's something else" }
}

Output:

It's four or five

Regex matching

Regex matching. Match syntax has also regex matching.

use v5.14;
use warnings;

use Syntax::Keyword::Match;

my $n = 'a4bbbb';

match($n : =~) {
case(/a1/) { say "It's one" }
case(/a2/) { say "It's two" }
case(/a3/) { say "It's three" }
case(/a4/),
case(/a5/) {
say "It's four or five"
}
default { say "It's something else" }
}

Output:

It's four or five

What I feel using Syntax::Keyword::Match

Personally, I feel number, string, regex matching is enough completed at production level(although Paul said it isn't enough yet).

I'm looking forward to match syntax.

2 Comments

Is this mean we will discard now experimental switch sytax?
this looks like useful, thank you:)

Leave a comment

About Yuki Kimoto

user-pic I'm Perl Programmer. I LOVE Perl. I want to contribute Perl community and Perl users.