mit-scheme cgi编程

一直对函数式编程很感兴趣,但是一直没有相关的实践,终于到了五一,闲来无事,故研究下。mit-scheme 不像很多scheme的解释器那样,它只接受标准输入的代码并执行,所以就不能像很多CGI在脚本的头部加上#!/bin/python中中方式来执行cgi。必须做一个转换。

方法1

转换的脚本如下

#!/bin/sh
for program in $@
do
    tail -n+2 $program | mit-scheme --quiet
done

将该代码保存为scm.sh 并给该脚本增加可执行权限,放在指定目录下。如/usr/bin下。
在你写的scheme代码文件的首部增加一句

#!/usr/bin/scm.sh

告诉linux你想要使用scm.sh来解析该脚本,然后scm.sh 将当前的scheme脚本去除第一行,通过管道传输给mit-scheme,然后mit-scheme执行完吐回结果。
我的test.scm脚本如下

#!/srv/www/cgi-bin/scm.sh
(display "content-type: text/plain") (newline)
 (newline)
(display "hello lisp")
(define getenv get-environment-variable)
(map
 (lambda (env-var)
   (display env-var)
   (display " = ")
   (display (or (getenv env-var) ""))
   (newline))
 '("AUTH_TYPE"
   "CONTENT_LENGTH"
   "CONTENT_TYPE"
   "DOCUMENT_ROOT"
   "GATEWAY_INTERFACE"
   "HTTP_ACCEPT"
   "HTTP_REFERER" ; [sic]
   "HTTP_USER_AGENT"
   "PATH_INFO"
   "PATH_TRANSLATED"
   "QUERY_STRING"
   "REMOTE_ADDR"
   "REMOTE_HOST"
   "REMOTE_IDENT"
   "REMOTE_USER"
   "REQUEST_METHOD"
   "SCRIPT_NAME"
   "SERVER_NAME"
   "SERVER_PORT"
   "SERVER_PROTOCOL"
   "SERVER_SOFTWARE"))

执行结果如下


方法2

在scheme的脚本前面加入一下两行代码
#!/bin/sh
exec tail -n+3 $0|mit-scheme --quiet;exit



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值