I had a little look at the beta version of microsoft's new command shell. at first glance it looks like a mix of perl and csh. with variable names prefixed with '$', and arrays specified with '@(...)', functions are dereferenced by '&' and c-style control statements, if, for, foreach, and {...} statement blocks. also "double" quoted strings are interpolated, and 'single' quoted strings are not.

notation for hashes is a bit different, @{key=val; key2=val2} to define, $var.key to access.

unfortunately also some vbscript. like the way you compare things. there is no way of enforcing a comparison operator to do a numeric compare.

another annoyance, is that 'pwd' tries to fit 4 representations of your current path in the current window-width. which then causes the relevant information to be truncated. but i think this can be controlled with a display.xml file

escaping is with back-quote, instead of back-slash, as the rest of the world does it. but at least, for the first time, ms actually figured escaping is useful. unfortunately you cannot specify characters by character code with escapes - like "\x1b" or "\033"

You can define anonymous functons, by just specifying them as code blocks {...} like with perl 'map'. a named function can have positional parameters and named parameters. like most unix commands, can have options, and parameters

the current path is replaced by the concept of 'current-location' which is not nescesarily a path on a local drive.

nice things are: exception handling, lambda functions, everything is an object, it is very easy to parse xml. ( just assign it to a object typed as [xml] )

hopefully beta, is that it uses enormous amounts of memory. after playing with it for half an hour, it had 100 M allocated.