пятница, 16 июля 2010 г.

Более удобный запуск внешних програм external-program-extender

Для лиспа существует возможность наиболее кроссплатформенно запускать внешние программы - external-program. В целом с задачей своей она справляется, и даже позволяет перенаправлять вывод в поток. Но вот сразу получить вывод в виде строки или же в виде списка строк, как это делает scsh - нет этого встроенного. Собственно, с целью получить подобную функциональность и написал небольшой extender. Теперь можно использовать следующую конструкцию:

* (run/string "ls" '("-a"))

".

..

bin

boot

cdrom

.config

dev

etc

home

initrd.img

initrd.img.old

.kde

lib

lib32

lib64

lost+found

media

mnt

proc

root

sbin

selinux

srv

sys

tmp

usr

var

vmlinuz

vmlinuz.old

"

Или, если хочется получить результат в виде списка строк, то:

* (run/strings "ls" '("-a"))

("." ".." "bin" "boot" "cdrom" ".config" "dev" "etc" "home" "initrd.img"

"initrd.img.old" ".kde" "lib" "lib32" "lib64" "lost+found" "media" "mnt"

"proc" "root" "sbin" "selinux" "srv" "sys" "tmp" "usr" "var" "vmlinuz"

"vmlinuz.old" "")

Данную библиотеку можно собрать из меркуриаловского хранилища исходных текстов, или же, при использовании Ubuntu или Debian из lisp-репизотрия для Ubuntu и Debian.

Комментариев нет:

Отправить комментарий