##
use strict;
use warnings;
use feature qw( switch say );
use Getopt::Long;
my $tester = 'test_it';
GetOptions("test=s" => \$tester);
sub test_it {
my $value = shift;
given($value) {
when(/aaa/) { return 'wanna' }
when(/bbb/) { return 'be' }
when(/ccc/) { return 'startin' }
default { return 'somethin' }
}
}
sub test_it2 {
my $value = shift;
do {
no warnings;
given($value) {
when(/aaa/) { 'wanna' }
when(/bbb/) { 'be' }
when(/ccc/) { 'startin' }
default { 'somethin' }
}
};
}
sub test_it3 {
my $value = shift;
do {
local $_ = $value;
if(/aaa/) { 'wanna' }
elsif(/bbb/) { 'be' }
elsif(/ccc/) { 'startin' }
else { 'somethin' }
};
}
foreach my $str (qw[testaaa testbbb testccc testddd]) {
say $main::{$tester}->($str);
}
##
##
#lang scheme
(define (test-it value)
(match value
[(regexp #rx"aaa") "wanna"]
[(regexp #rx"bbb") "be"]
[(regexp #rx"ccc") "startin"]
[_ "somethin"]))
(for ([str '("testaaa" "testbbb" "testccc" "testddd")])
(printf "~a~n" (test-it str)))