我正在尝试为我在SourceForge上托管的字典项目编写自动完成功能.不幸的是,SF上的Perl没有安装JSON模块.如何在不使用模块本身的情况下解决此问题?作为模型,我在jensbits上使用了JQuery UI自动完成指南.
这是Perl代码,它应该查询文本并发送到自动完成模块
#!/usr/bin/perl
use strict;
use CGI;
use DBI;
use JSON;
# HTTP HEADER
print "Content-type: application/json; charset=iso-8859-1\n\n";
my $dbh = DBI->connect("DBI:mysql:database;mysql_read_default_file=/path/.my.cnf");
$dbh->do("set character set utf8");
$dbh->do("set names utf8");
my ($p, $sth, @query_output);
$p = new CGI;
my $term = $p->param('term');
$sth = $dbh->prepare(qq{SELECT trim(both char(13) FROM article) AS value, definition FROM dict WHERE article like ?;});
$sth->execute('%'.$term.'%');
# LOOP THROUGH RESULTS
while ( my $row = $sth->fetchrow_hashref ){
push @query_output, $row;
}
#CLOSE THE DATABASE CONNECTION
$dbh->disconnect()
# JSON OUTPUT
print JSON::to_json(\@query_output);
Run Code Online (Sandbox Code Playgroud)
据我所知,JSON软件包不需要安装在系统中。您只需下载最新的 JSON 发行版,解压,将其上传到您的主机,然后让 Perl 知道在哪里获取代码:只需添加
use lib '/absolute/path/to/JSON/lib';
Run Code Online (Sandbox Code Playgroud)
前
use JSON;
Run Code Online (Sandbox Code Playgroud)
如果您不知道绝对路径或想让代码更可移植,您可以使用FindBin包来查找相对于您的二进制文件的 JSON 发行版目录:
use FindBin
use lib "$FindBin::Bin/JSON/lib";
Run Code Online (Sandbox Code Playgroud)
我希望这能解决您的问题。
| 归档时间: |
|
| 查看次数: |
3666 次 |
| 最近记录: |