Perl-MySQL问题

Perl-MySQL问题,mysql,perl,Mysql,Perl,我是一名完全的Perl noob,我是一名PHP程序员,目前正在努力学习Perl。 我在位于c:\Xampp- 我有这个代码,它给了我一个错误 use strict; use warnings; use CGI::Simple; use DBI; $host = "localhost"; $database = "store"; $tablename = "inventory"; $user = "root"; $pw = ""; $connect = Mysql->connect($

我是一名完全的Perl noob,我是一名PHP程序员,目前正在努力学习Perl。
我在位于c:\Xampp-
我有这个代码,它给了我一个错误

use strict; use warnings;
use CGI::Simple;
use DBI;

$host = "localhost";
$database = "store";
$tablename = "inventory";
$user = "root";
$pw = "";

$connect = Mysql->connect($host, $database, $user, $pw);

@databases = $connect->listdbs;
foreach $database (@databases) {
    print "$database<br />";
}
使用严格;使用警告;
使用CGI::Simple;
使用DBI;
$host=“localhost”;
$database=“store”;
$tablename=“库存”;
$user=“root”;
$pw=“”;
$connect=Mysql->connect($host、$database、$user、$pw);
@数据库=$connect->listdbs;
foreach$数据库(@databases){
打印“$database
”; }
错误:

在C:/xampp/htdocs/testing/learn_perl/index.pl第5行的@INC(@INC包含:C:/xampp/perl/lib/C:/xampp/perl/lib C:/xampp/perl/site/lib C:/xampp/site/lib C:/xampp/xampp/apache)中找不到CGI/Simple.pm。BEGIN失败--编译在C:/xampp/htdocs/testing/learn\u perl/index.pl第5行中止


您应该从CPAN安装CGI::Simple模块

从CPAN安装模块的一种简单方法是:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus
之后,您可以使用以下简单工具安装模块:

cpanm Some::Module
e、 g


您应该从CPAN安装CGI::Simple模块

从CPAN安装模块的一种简单方法是:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus
之后,您可以使用以下简单工具安装模块:

cpanm Some::Module
e、 g

复制粘贴自:

每个活动状态的perl安装都提供了一个新的选项,至少我是通过perl Vesion 5.8.X获得的。您所要做的就是按照以下步骤进行操作

  • 单击开始
  • 单击运行
  • 键入cmd并按enter键
  • 键入ppm并按enter键
  • 一旦收到ppm实用程序提示
    如ppm>类型安装模块名称
    安装CGI::Simple
  • ppm实用程序将为您安装perl模块。

    从以下位置复制粘贴:

    每个活动状态的perl安装都提供了一个新的选项,至少我是通过perl Vesion 5.8.X获得的。您所要做的就是按照以下步骤进行操作

  • 单击开始
  • 单击运行
  • 键入cmd并按enter键
  • 键入ppm并按enter键
  • 一旦收到ppm实用程序提示
    如ppm>类型安装模块名称
    安装CGI::Simple

  • ppm实用程序将为您安装perl模块。

    对于您向我们展示的任何代码,您都不需要CGI::Simple。如果您计划稍后将程序转换为CGI应用程序,那么我建议您使用CGI而不是CGI::Simple。CGI最明显的优点之一是,它包含在标准Perl安装中,因此您无需自己安装


    但那只是你问题的开始。看起来你找到了一个糟糕的教程。使用链接到的资源,您可能会做得更好。

    对于您向我们展示的任何代码,您都不需要CGI::Simple。如果您计划稍后将程序转换为CGI应用程序,那么我建议您使用CGI而不是CGI::Simple。CGI最明显的优点之一是,它包含在标准Perl安装中,因此您无需自己安装


    但那只是你问题的开始。看起来你找到了一个糟糕的教程。使用链接到的资源,您可能会做得更好。

    哎哟,那个教程看起来不太好。试试这个,让我解释一下它的作用:

    #!c:\strawberry\perl\bin\perl.exe -T
    
    use strict;
    use warnings;
    
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
    use DBI;
    
    my $host = 'localhost';
    my $database = 'store';
    my $tablename = 'inventory';
    my $user = 'root';
    my $pw = '';
    
    my $dbh = DBI->connect("DBI:mysql:$database;host=$host",
        $user, $pw, { RaiseError => 1 })
        or die "Unable to open database: $DBI::errstr";
    
    my $stmt = $dbh->prepare('SHOW DATABASES');
    $stmt->execute();
    my $databases = $stmt->fetchall_arrayref();
    $dbh->disconnect();
    
    my $page = new CGI;
    print $page->header();
    print $page->start_html();
    foreach $database (@$databases) {
        print $database->[0] . '<br />';
    }
    print $page->end_html();
    
    #!c:\草莓\perl\bin\perl.exe-T
    严格使用;
    使用警告;
    使用CGI;
    使用CGI::Carp qw(fatalsToBrowser);
    使用DBI;
    my$host='localhost';
    我的$database='store';
    我的$tablename='存货';
    我的$user='root';
    我的$pw='';
    my$dbh=DBI->connect(“DBI:mysql:$database;host=$host”,
    $user,$pw,{RaiseError=>1})
    或者“无法打开数据库:$DBI::errstr”;
    my$stmt=$dbh->prepare('SHOW DATABASES');
    $stmt->execute();
    my$databases=$stmt->fetchall_arrayref();
    $dbh->disconnect();
    my$page=新的CGI;
    打印$page->header();
    打印$page->start_html();
    foreach$数据库(@$数据库){
    打印$database->[0]。
    ; } 打印$page->end_html();
    第一行是一个标准的脚本头,让web服务器知道运行哪个二进制文件。在本例中,我添加了“-T”标志以在Perl中启用。这将有助于安全

    您添加了“使用严格”和“使用警告”,非常好。开始练习将这些放在脚本的顶部

    接下来的三个use语句是将包含在此脚本中的库。在本例中,我用于生成HTML、将错误消息输出到浏览器(这有助于调试)以及使用数据库。如果您曾经收到您发布的错误消息(“找不到…”),则表示您正在尝试使用尚未从CPAN安装的库。您可以查看以获取有关安装库的帮助

    接下来我设置局部变量。因为我已经在上面打开了严格模式,所以每个新变量的前缀必须是'my'或'our',这取决于我想要的范围

    现在,我使用DBI模块连接到数据库。这里我使用的是mysql库,所以请确保安装了DBD::mysql。我还传递了一个名为“RaiseError”的可选参数;这将确保任何SQL错误都会导致错误。如果我没有打开它,我将不得不检查我所做的任何SQL调用的返回变量。如果连接有任何问题,我还决定使用“die”操作终止脚本。您可能希望将其更改为生产重定向;“or”关键字之后的任何内容都将在出现错误时执行

    然后执行实际的SQL操作。使用我的数据库句柄,我准备一条语句并执行它。然后,我将所有结果检索到一个文档中,以供以后使用。然后我断开了与数据库的连接

    最后一个块实际上打印出HTML。我创建一个新的CGI对象,然后打印出标题。我启动HTML,然后打印出找到的每个数据库。在foreach语句中,我需要让Perl知道$d