======Expando substitutions====== Before a string can be used, it must be "expanded" whereby the expandos (things that start with $) in the string are removed and replaced with their values, and backslashes (\\) are dequoted. However, stuff inside of parenthesis "(...)" or curly braces "{...}" is considered literal text and is not expanded. The stuff inside parenthesis and curly braces is usually expanded later by someone else. ======Places where expandos are substituted====== The following strings are expanded each time they are used: - Command statements before they are executed, as in "//echo $ooga//" - The argument list to any function call, as in $foo(//$ooga//) - Any expression [[lval]]ue, as in "@//$ooga// += 3" - The contents of a [...] or "..." expression operand, as in "@foo = [//$ooga//]" - The default value of an arglist variable, as in "alias off (var1 default "//$ooga//") - The width modifier in an expando (see below), as in "$[//$ooga//]foo" - The inside of the $(...) expando, as in $(//$ooga//) - The BX compatable form of $cparse(), as in $cparse("one two" //buckle my $1 shoes $ooga//) - The wildcard pattern of a flexible hook, as in /on msg '//$ooga// *' {...} - The word list to [[fe]] or [[fec]], as in /fe (//$ooga//) {...} - The word list to [[for|for var in]], as in /for i in (//$ooga//) {...} - The control value in [[switch]], as in /switch (//$ooga//) {...} - The matching pattern in [[switch]], as in /switch ($*) {(//$ooga//) {...}} - Ach, there are so many more... =====Modifiers applicable to any expando===== =====All forms===== =====Protection from expansion===== =====Expandos and expression mode===== =====Special expandos=====