Yeah that reply isn't coming back. Anyway, I was totally hoping you'd chime
in with some holes you found. :)
On Friday, August 24, 2012 6:33:01 AM UTC-7, Henrik Lindberg wrote:
>
> - How do I create strings that span multiple lines? (Since there is no
> string concatenation operator 'x' + 'y' does not work). Can I write a
> string that continues on the next line? If so, is the newline included
> or not? Can I tell it to not include the newline? How is the line-break
> encoded - if it is CR-LF in the pp-file, does the string contain that at
> runtime?
>
Added this! Line breaks are preserved, line break format is preserved (so
whatever you used in the file, that's what you get in your strings, I don't
like it either), you can use \n to get literal Unix line breaks, but you
can't use \r\n to get Windows ones because \r doesn't exist. There isn't an
ignore-whitespace option for strings.
> - Can I write more complex expressions in an interpolation? Can I do
> something like "The sum is ${$a + $b}", and if that is the case, is it
> possible to have any expression interpolated (including nested strings
> with interpolation)?
>
Nope! Thanks for reminding me about this, I remember trying to make Puppet
do this and being disappointed.
>
> - The compiler allows ${a} without double quotes - which is a string
> interpolation of $a. Which IIRC is slightly different than using $a
> directly (getting an empty string if $a is undefined). I don't recall
> seeing that in the documentation on the first read through.
>
If the parser allows this, it's getting blocked elsewhere in the system,
because Puppet definitely fails compilation hard if you try to use ${var}
outside a double-quoted string.
> - IIRC, Use of numerical variables $0 - $9 as a result of regular
> expression matching was not mentioned. When talking about variables I
> think it is worth noting that you should not use $0 - $9 for anything
> else (or you may be surprised as the regexp match creates an inner scope
> where these variables refer to match results). (IMO use of $0-$9 should
> be reserved for that purpose and they should not be assignable).
>
Ahhh good call. Actually, I just tested and it looks like assigning
directly to $\d is a no-op??? That's pretty wild. Anyway, putting them in
as reserved variable names.
> - Arrays and Hashes are mutable; which is either an bug or a language
> feature. While it is not allowed to directly change a variable, it can
> be indirectly modified if it refers to an array or hash. Great if the
> documentation can clarify if this is a supported feature or should be
> avoided. i.e. $a = [1,2,3] $a[0] = 10. (IMO, this is problematic as any
> logic can refer to the variable and assign to an entry - at least last I
> tried).
>
D:< EWW. "Problematic" is putting it mildly, especially since behavior is
inconsistent between arrays and hashes. (Both can add, only arrays can
reassign to existing indexes.) But I'd better document it anyhow.
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/puppet-users/-/hc2Wbvx7tUsJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.