True, there are some functional limitations. My comment was more about looks and readability (assuming sufficient functionality) and is not to be taken as an argument against switch/case support (I've never wished for it, let alone needed it, but I have nothing against it either).

An idea (and just that) regarding the first limitation could be this:
Code:
alias moo { 
  var %moo = $1 
  goto %moo {
    :cow 
    echo -a moo cow 
    goto break 
 
    :dog 
    echo -a moo dog 
    goto break
 
    :cat 
    echo -a moo cat 
    goto break
 
    :%moo
    echo -a moo mouse 
  } | :break
}

Granted, this uglifies the code a little bit, and the same "goto break" command can't be used in more than one blocks etc, but it's not inefficient in any (significant) way.

The inability to have labels with spaces or identifiers is more serious imo though (and perhaps the only use I'd have for switch in my scripts).


/.timerQ 1 0 echo /.timerQ 1 0 $timer(Q).com