我是刚刚从大学c ++世界走出来的新手,所以如果问题看起来太“简单”或者我使用了任何不正确的术语,请与我一起出去。
我正在尝试学习Perl然后我最终编写了一个脚本,试图找到给出课程名称的所有可能的时间表,其中可能的时间表意味着课程时间之间没有冲突,通过迭代所有部分。
我抓住了我的大学课程表并将它们放在一个凌乱的数据结构哈希到一个二维数组的哈希中,其中第一个哈希表示主题,第二个哈希表示课程编号,然后是一个部分数组,其中每个部分是一个数组所有数据。 (不是最吸引人的数据结构)
然后,我通过迭代所有可能的计划组合处理所有计划组合,并返回没有碰撞的所有计划作为3D数组(其中每个条目都是一个计划,每个计划都有课程,每个课程都有其特定数据)
现在,我可以将脚本中的输入硬编码为2D数组,其中每个元素都包含主题名称和课程编号。
我现在要做的是将其转换为网站。
我参加了关于数据库的在线课程,但我不知道如何处理来自Perl的数据库,或者这是否是一个好方法。
我不知道如何存储永久抓取的数据,因此可以用于进一步的计算。
我知道基本的HTML和CSS以及Javascript,但我不知道如何将脚本与它们集成并从用户那里获取输入(我只知道如何在Javascript中执行此操作)。谷歌引导我走向“cgi-scripts”,但我对服务器一无所知,只是他们负责网站完成的计算,其中一个叫做Apache或AJAX。我不确定这是否属实,但我想让你了解我的专业水平。
请告诉我,为了能够建立这个网站我需要学习什么,请指出我正确的方向。任何帮助将不胜感激。
答案 0 :(得分:3)
我参加了一个关于数据库的在线课程,但我不知道如何处理来自Perl的数据库,或者这是否是一个好方法。
Perl中的数据库访问是通过DBI完成的。你可以使用DBIx::Class为它获得一个漂亮的OO抽象。
我不知道如何存储永久抓取的数据,因此可以用于进一步的计算。
数据库是一个不错的选择。
我知道基本的HTML和CSS以及Javascript,但我不知道如何将脚本与它们集成并从用户那里获取输入(我只知道如何在Javascript中执行此操作)。
使用<form>
。将action
设置为服务器端程序的URL。提交表格。
谷歌引导我走向“cgi-scripts”但我对服务器一无所知,只是他们负责网站完成的计算,其中一个叫做Apache或AJAX。我不确定这是否属实,但我想让你了解我的专业水平。
HTTP服务器侦听HTTP请求并提供HTTP响应。浏览器(以及搜索引擎和其他客户端)向托管网站的服务器发出HTTP请求。服务器响应呈现站点所需的数据(HTML,CSS,JavaScript,图像等),客户端呈现它(或索引它或其他任何内容)。
Apache HTTPD是最常用的HTTP服务器之一。
CGI是指HTTP服务器通过运行程序而不是仅仅移交静态文件来确定响应内容的方法。它非常简单但效率不高。 this answer中描述了一些替代方案。
Ajax与此无关。这意味着“在网页中使用JavaScript来告诉浏览器发出新的HTTP请求(不离开页面)并使响应可用于JavaScript”。
答案 1 :(得分:2)
这将是一个部分/模糊的答案..
对于数据库,你要做的是学会使用DBI这是一个独立的api数据库实现与数据库交谈(它甚至可以写入csv文件!)。您还需要一个适合您所选数据库的驱动程序。
至于网站,这超出了我的技能,有很多方法可以做到这一点。 Perl将通过名为CGI的东西用于服务器端。另一方面,Javascript通常在客户端处理,用于向您的站点添加动态元素。 Apache是一个Web服务器软件,它负责与您的浏览器交谈并传递相关的html页面,您可能需要使用它,但您不需要为基本用例编写任何代码。
对于perl网页,您可以从this tutorial开始更好地了解,然后查看perl monks以获得更好(和更新)的答案。这篇文章还将为您提供更实用的建议,例如使用Dancer
答案 2 :(得分:1)
对于纯perl设置,HTTP::Daemon
和HTTP::Response
模块是您最好的朋友。我尝试使用IO::Socket
之外的任何东西编写一个Web服务器,几乎让自己疯狂。
入门非常简单。
use strict;
use warnings;
use HTTP::Daemon;
my %opt = (
'listen-host' => 'localhost',
'listen-port' => 8808,
);
my $d = HTTP::Daemon->new(
LocalPort => $opt{'listen-port'},
LocalAddr => $opt{'listen-host'},
Reuse => 1,
) or die "HTTP listener failed at $opt{'listen-host'}:$opt{'listen-port'} - $!";
print "Started HTTP listener!\n";
my $c = $d->accept;
现在您的脚本将一直坐在那里,直到您从浏览器获得连接。当然,您仍需要发送回复,因此请参阅HTTP::Response了解如何发回数据。