Yes, only arrays are indexable. And yes, regextract is fairly new...
> Hi Dan, > > Thanks for the tip. \B does seem to work in the way that I expected the > null pattern to (although I understand the subtle difference you point > out. Fortunately, our usernames shouldn't have any word boundaries in > them.) > > The other issue that I am running into is that it seems that slists > cannot be indexed - calling getindices on an slist does not seem to > return another slist. So only arrays have indices (?) > > I attempted: > > vars: > "chars" slist => splitstring("word", "\B", 4); > > reports: > cfengine_3:: > "The first letter in word is $(chars[0])" > > But that doesn't seem to work. So, per your suggestion, I tried > regextract - according to the online docs, regextract will create an > array, which I may be able to use in this way. Problem is... > > > # cf-agent -f ./understanding_slist.cf -I -K > > cf3:./understanding_slist.cf:24,83: Unknown built-in function > > regextract(), near token ')' > Is regextract() only available after 3.0.3? > > Jim > > On 2/26/10 2:13 PM, daniel.kl...@cfengine.com wrote: > > Jim- > > > > You're right, splitstring does not split on every character (and maybe it > > should if you specify a null pattern). And you missed on "." (because that > > makes every character a separator, and then there are no characters to > > separate) and on "[.]" (because a '.' in a [character class] is just a dot, > > and there are no dots in your string. But here's something that will get > > you closer: > > > > vars: > > "chars" slist => splitstring("word", "\B", 4); > > > > (look in the Perl manual for the reason :-) This works fine if you only ha > ve > > alphanumeric characters in your string (a-zA-Z0-9_). However, it will NOT > work > > right if you try to split "foo:baz:bar". > > > > Look at regextract, too - that may be another way of accomplishing what you > > want - in case you need to address more complicated strings to split. > > > > -Dan > > > > P.S. \b means the place between a \w and a \W character. \B means the pla > ce > > between two \w or two \W characters. > > > > _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine