CSV stands for Comma Separated Value. Its the standard for displaying list
information as a string
. Since the days before llDumpList2String()
a CSV (using llList2CSV()
) was the only way to transfer list values over string interfaces (like object talk (whisper
) or link messages). Comma Separated Values are... well... separated by commas.
The, Quick, Brown, Fox, Jumped, Over, The, Lazy, Dog
Foo, Bar, The, And, Red, Goo
The space after the comma is optional, so the following is also a valid CSV string:
The CSV functions are nice for passing multiple parameters as a single string (using llMessageLinked
for example). You can even pass complex types like vectors or rotations even though their string representations have commas. LSL handles the fuss for you, which indicates that the functions don't actually implement the most basic case of CSV, but some version of it with built in escaping. More specifically, commas inside angle brackets ("<" and ">") are not interpreted as separators.
BUT, one thing to be aware of when unpacking the string back into a list is that the type information associated with any given list entry is lost (there are ways around this, see the llCSV2List
entry). It's up to you to know what the type of a given list item is and you must use llList2String
and cast the result to the correct type as in:
Lists that haven't been gone through CSV conversion work normally as described under lists
perform the same functions, but allow variable separators, not just commas. This can be better when working with vectors, rotations, complete sentences, etc.