Given When

GivenWhen, is arguably the most awesome feature in PerlSix. (Arguably because others say it's the only awesome feature in PerlSix :D)

GivenWhen allows you to write SwitchCase? statements in an elegant, expressive way:

    given($foo) {
        when any(1, 3, 5) {
           say '$foo is an odd number less than 6!';
        }
        when 6..100 {
           say '$foo is between 6 and 100'
        }
        when any(<bar baz quux>) {
           say '$foo is "bar" or "baz" or "quux"'
        }
        when /foo/ & /bar/ & /bazzoo/ {
            say '$foo contains "foo", "bar", and "bazzoo", too!'
        }
        when &complicated_check {
            say 'complicated_check($foo) returns true!'
        }
        when $_ < 0 {
            say '$foo is negative!'
        }
        default {
            say 'I give up, you decide. $foo is: ' ~ $foo;
        }
    }
The when statement translates like so:
    when x {blah}
becomes
    if $_ ~~ x {blah; succeed}
As such, when can also be used in foreach loops which pass in the parameter $_, like so:
    for (@array) {
        when Array {
             print "Multidimensional!";
        }
        when any(1, 2, 3) {
             print "1, 2, or 3!";
        }
    }


CategoryPerl


EditText of this page (last edited September 2, 2014) or FindPage with title or text search