Perl 专家系统不';初始化

Perl 专家系统不';初始化,perl,expert-system,Perl,Expert System,我正在使用从web内容运行专家系统 我有一个网站,在那里我用以下代码运行Perl脚本: use strict; use warnings; use AI::ExpertSystem::Advanced; use AI::ExpertSystem::Advanced::KnowledgeDB::Factory; use Data::Dumper; use File::Slurp; open(LOG, ">C:\\xampp\\htdocs\\xampp\\bc\\log.txt");

我正在使用从web内容运行专家系统

我有一个网站,在那里我用以下代码运行Perl脚本:

use strict;
use warnings;

use AI::ExpertSystem::Advanced;
use AI::ExpertSystem::Advanced::KnowledgeDB::Factory;
use Data::Dumper;
use File::Slurp;

open(LOG, ">C:\\xampp\\htdocs\\xampp\\bc\\log.txt");

print LOG "START EXPERT\n";
system("C:\\Perl\\bin\\perl C:\\xampp\\htdocs\\xampp\\bc\\create_yaml.pl");

print LOG "START CREATE DB\n";
my $yaml_kdb = AI::ExpertSystem::Advanced::KnowledgeDB::Factory->new('yaml', {
    filename => 'C:\\xampp\\htdocs\\xampp\\bc\\recepty.yaml'
});

print LOG "LOAD RECEPTY\n";
my $text = read_file(
    'C:\\xampp\\htdocs\\xampp\\bc\\knowledgebase.yaml',
    array_ref => 1,
    chomp     => 1
);

print LOG "LOAD DB\n";
my $ai = AI::ExpertSystem::Advanced->new(
    viewer_class  => 'terminal',
    knowledge_db  => $yaml_kdb,
    initial_facts => $text
);

print LOG "NEW ES\n";
$ai->mixed();

print LOG "RESULT DONE\n";
#$ai->summary();
close LOG;
我试图创建一个日志。当我在终端上运行这个源代码时,我的日志已经满了,一切都正常。但当我从网络上运行它时,它是错误的。我的日志文件仅为:

START EXPERT
START CREATE DB
LOAD RECEPTY
LOAD DB
我认为创建新的专家系统是不好的。链接或我不知道。你觉得怎么样

我的本地服务器出错:

Compilation failed in require at C:/Perl/lib/Term/ReadLine/Perl.pm line 65. 
The system cannot find the path specified. Unable to get Terminal Size. 
The Win32 GetConsoleScreenBufferInfo call didn't work. 
The COLUMNS and LINES environment variables didn't work. 
The resize program didn't work. at C:/Perl/lib/Term/ReadKey.pm line 362. 
Compilation failed in require at C:/Perl/lib/Term/ReadLine/Perl.pm line 65.
(最初作为对重复问题的答复提交至)

问题中的错误消息表示错误被抛出到
C:/Perl/lib/Term/ReadKey.pm第362行
,并且
use Term::ReadKey
出现在
C:/Perl/lib/Term/ReadLine/Perl.pm第65行
。如果您在CGI环境中运行此代码,那么使用ReadLine/ReadKey毫无意义,它们无法初始化也就不足为奇了

但是,您正在使用
viewer\u class=>“terminal”
创建您的ExpertSystem实例,这会导致它使用“从AI::ExpertSystem::Advanced::viewer::Base扩展而来,其主要目的是与(控制台)终端(emphasis mine)交互,并使用ReadLine来实现。为了实现这一点,您需要使用不同的查看器类,它不会“与(控制台)终端交互”


不幸的是,找不到其他可用的查看器,因此您需要在其他地方找到一个(AI::ExpertSystem::Advanced的作者可能知道在哪里可以为CGI找到一个)或者编写自己的查看器类。

您查看过Web服务器的错误日志吗?
在C:/Perl/lib/Term/ReadLine/Perl.pm第65行的require中编译失败。系统找不到指定的路径。无法获取终端大小。Win32 GetConsoleScreenBufferInfo调用不起作用。列和行环境变量不起作用。调整大小程序不起作用。在C:/Perl/lib/Term/ReadKey.pm第362行。在C:/Perl/lib/Term/ReadLine/Perl.pm第65行的require中编译失败。
我试图编写自己的查看器类。你有什么好主意做什么?怎么办?我创建了一个.pm文件,但我不知道应该用什么来代替ReadLine/ReadKey???不幸的是,没有,我没有这个模块的经验。您最好尝试通过AI::ES::A文档中的电子邮件地址或PFISCHER@cpan.org).