On Sat, Sep 30, 2017 at 10:30 PM, ToddAndMargo <toddandma...@zoho.com> wrote:
> On 09/30/2017 02:15 PM, Brandon Allbery wrote: > >> Basically: < > is single quotes and treats variables and expressions as >> literals. << >> is double quotes and interpolates variables but not general >> expressions. And { } does no quoting at all and uses general expressions. > > This gets a little complex... > 1) expressions > > 2) the difference between "expressions" and "general expressions" > Doublequoted strings don't just expand variables. Postfixes (like [] or <> to look up values in arrays/hashes) are also understood; method calls on variables also work, as long as they end with a parenthesized expression (so, "hi $foo.name" will not work (it'll expand '$foo' instead of '$foo.name') but "hi $foo.name()" will, provided $foo contains an object with a 'name' method). This is what I meant by 'expression', which I should have probably called 'simple expression' or something. > 3) Quoting. The difference between "" and <> > ' ' strings and <> postfixes are almost identical. %foo<a> is the same as %foo{'a'}. But %foo<a b> acts like you did: %foo{'a'}, %foo{'b'} " " strings and << >> postfixes are almost identical. %foo<<a>> is the same as %foo{"a"}. But %foo<<a b>> acts like you did: %foo{"a"}, %foo{"b"} Inside ' ' strings, everything is literal. Inside " " strings, variables like $foo and (simple) expressions (described above) will be replaced by their values; and you can use { } to insert the result of any expression. (This also works in << >>.) pyanfar Z$ 6 'my %x = ("a"=>"b","c"=>"d", "e"=>"f"); my $v = "b"; say %x<<a {$v.succ}>>' (b d) 4) "interpolating" as it refers to Perl (not math, where you "guess" > what a value is based on values on both sides of you). > Replacing something inside a string with the string representation of its value. This sense is also used in documentation for the shell, where you can also interpolate `` subcommand output and such. -- brandon s allbery kf8nh sine nomine associates allber...@gmail.com ballb...@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net