Hi Dean Welcome to the picolisp community.
When using (in (list)) you don't need to use (call), the content of the list argument to (in) get directly passed to the command line. So try: (in (list 'ls) (line T)) this is the same as: (in '(ls) (line T) This way you only read the first line of stdout from the called program ls. You can use (make) and (link) to build a list, e.g. (setq FileList (make (in (list 'ls) (while (line T) (link @) ) ) ) ) (make) returns a list which is here saved in the variable FileList. You can view FileList by just entering the name of the variable in the REPL