**** xref:xlat/misc/config.adoc[Server Configuration]
**** xref:xlat/misc/length.adoc[length]
**** xref:xlat/misc/misc.adoc[Miscellaneous]
+**** xref:xlat/misc/pairs.print.adoc[pairs.print]
**** xref:xlat/misc/rand.adoc[rand]
*** xref:xlat/character.adoc[Single Letter Expansions]
| xref:xlat/misc/config.adoc[Server Configuration] | Examine configuration items
| xref:xlat/misc/length.adoc[length] | Get the length of data
| xref:xlat/misc/misc.adoc[Miscellaneous] | Functions to execute regular expression search on string, using pattern.
+| xref:xlat/misc/pairs.adoc[pairs.print] | print attributes with name and value.
| xref:xlat/misc/rand.adoc[rand] | random integers
|===
--- /dev/null
+= %pairs.print(<list>.[*])
+
+Print attributes with name and value.
+
+.Return: _string_
+
+Note that there is no "parse string into pairs" function. Instead,
+you can simply assign the string to a structural attribute (`group`,
+`tlv`, etc.) and the string will be parsed as assigning a value to a
+given attribute.
+
+.Example
+
+[source,unlang]
+----
+control.Tmp-String-0 := { "This is a string", "This is another one" }
+reply.Reply-Message := "Serialize output: %pairs.print('control.[*]')"
+----
+
+.Output
+
+```
+Serialize output: Tmp-String-0 = "\"This is a string\", Tmp-String-0 = \"This is another one\""
+```
+
+// Copyright (C) 2025 Network RADIUS SAS. Licenced under CC-by-NC 4.0.
+// This documentation was developed by Network RADIUS SAS.