【发布时间】:2017-01-24 23:57:00
【问题描述】:
我正在编写一个名为“hlstats.pl”的脚本,它是来自 http://www.hlstats-community.org/ 的《半条命》游戏的统计服务器
我正在尝试在带有 MySQL 的 Windows 上的 Strawberry perl 上运行它。
我已将问题隔离为 fetchrow_array 仅返回查询中最后一列的内容。
这是我从 hlstats.pl 修改的代码 sn-p
# load the options from DB
my $result = &doQuery("SELECT keyname, value FROM `${db_prefix}_Options`");
my @row;
while (@row = $result->fetchrow_array()) {
foreach $field (@row) {
if (defined($field)) {
print "$field\n";
} else {
print "<NULL>\n";
}
}
}
##my ($keyname, $value, %oHash);
##while( ($keyname, $value) = $result->fetchrow_array ) {
## # $oHash{$keyname} = $value;
## print $keyname;
## print "\n";
##}
$result->finish();
如果它是最后一个,它将打印出“值”列中的所有值,我可以反转它,它将打印所有 如果我在查询中移动这些值,则“键名”列中的值。我不清楚为什么我们没有收到所有的专栏。
这是为 MSWin32-x86-multi-thread 构建的 perl v5.10.0
MySQL 版本 5.7.10
“perldoc perllocal”输出
Thu Jan 29 21:17:27 2009: "Module" ExtUtils::MakeMaker
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 6.48"
* "EXE_FILES: bin/instmodsh"
Thu Jan 29 21:17:32 2009: "Module" File::Path
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.07"
* "EXE_FILES: "
Thu Jan 29 21:17:38 2009: "Module" ExtUtils::Command
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.16"
* "EXE_FILES: "
Thu Jan 29 21:17:47 2009: "Module" Win32API::File
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.1101"
* "EXE_FILES: "
Thu Jan 29 21:18:05 2009: "Module" ExtUtils::Install
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.52"
* "EXE_FILES: "
Thu Jan 29 21:18:10 2009: "Module" ExtUtils::Manifest
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.56"
* "EXE_FILES: "
Thu Jan 29 21:18:34 2009: "Module" Test::Harness
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 3.14"
* "EXE_FILES: bin/prove"
Thu Jan 29 21:18:43 2009: "Module" Test::Simple
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.86"
* "EXE_FILES: "
Thu Jan 29 21:18:48 2009: "Module" ExtUtils::CBuilder
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.24"
* "EXE_FILES: "
Thu Jan 29 21:18:54 2009: "Module" ExtUtils::ParseXS
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.19"
* "EXE_FILES: "
Thu Jan 29 21:19:05 2009: "Module" version
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.76"
* "EXE_FILES: "
Thu Jan 29 21:19:11 2009: "Module" IO::Compress::Base
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.015"
* "EXE_FILES: "
Thu Jan 29 21:19:23 2009: "Module" Compress::Raw::Zlib
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.015"
* "EXE_FILES: "
Thu Jan 29 21:19:33 2009: "Module" Compress::Raw::Bzip2
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.015"
* "EXE_FILES: "
Thu Jan 29 21:20:34 2009: "Module" IO::Compress::Zlib
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.015"
* "EXE_FILES: "
Thu Jan 29 21:20:47 2009: "Module" IO::Compress::Bzip2
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.015"
* "EXE_FILES: "
Thu Jan 29 21:20:55 2009: "Module" Compress::Zlib
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.015"
* "EXE_FILES: "
Thu Jan 29 21:21:18 2009: "Module" Compress::Bzip2
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.09"
* "EXE_FILES: "
Thu Jan 29 21:21:24 2009: "Module" IO::Zlib
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.09"
* "EXE_FILES: "
Thu Jan 29 21:21:31 2009: "Module" Cwd
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 3.29"
* "EXE_FILES: "
Thu Jan 29 21:21:53 2009: "Module" File::Temp
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.21"
* "EXE_FILES: "
Thu Jan 29 21:22:03 2009: "Module" Win32::WinError
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.03"
* "EXE_FILES: "
Thu Jan 29 21:22:14 2009: "Module" Win32API::Registry
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.30"
* "EXE_FILES: "
Thu Jan 29 21:22:19 2009: "Module" Win32::TieRegistry
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.25"
* "EXE_FILES: "
Thu Jan 29 21:22:24 2009: "Module" File::HomeDir
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.82"
* "EXE_FILES: "
Thu Jan 29 21:22:29 2009: "Module" File::Which
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.05"
* "EXE_FILES: bin/pwhich"
Thu Jan 29 21:22:42 2009: "Module" Archive::Zip
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.26"
* "EXE_FILES: bin/crc32"
Thu Jan 29 21:22:46 2009: "Module" Package::Constants
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.02"
* "EXE_FILES: "
Thu Jan 29 21:22:51 2009: "Module" IO::String
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.08"
* "EXE_FILES: "
Thu Jan 29 21:22:59 2009: "Module" Archive::Tar
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.44"
* "EXE_FILES: bin/ptar bin/ptardiff"
Thu Jan 29 21:23:04 2009: "Module" Parse::CPAN::Meta
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.04"
* "EXE_FILES: "
Thu Jan 29 21:23:16 2009: "Module" YAML
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.68"
* "EXE_FILES: "
Thu Jan 29 21:23:23 2009: "Module" Digest::MD5
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.38"
* "EXE_FILES: "
Thu Jan 29 21:23:29 2009: "Module" Digest::SHA1
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.11"
* "EXE_FILES: "
Thu Jan 29 21:23:38 2009: "Module" Digest::SHA
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 5.47"
* "EXE_FILES: shasum"
Thu Jan 29 21:25:58 2009: "Module" CPAN
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.9301"
* "EXE_FILES: scripts/cpan"
Thu Jan 29 21:26:05 2009: "Module" Term::ReadKey
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.30"
* "EXE_FILES: "
Thu Jan 29 21:26:09 2009: "Module" Term::ReadLine
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.0302"
* "EXE_FILES: "
Thu Jan 29 21:26:13 2009: "Module" Text::Glob
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.08"
* "EXE_FILES: "
Thu Jan 29 21:26:24 2009: "Module" URI
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.37"
* "EXE_FILES: "
Thu Jan 29 21:26:28 2009: "Module" HTML::Tagset
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 3.20"
* "EXE_FILES: "
Thu Jan 29 21:26:41 2009: "Module" HTML::Parser
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 3.59"
* "EXE_FILES: "
Thu Jan 29 21:27:18 2009: "Module" LWP
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 5.823"
* "EXE_FILES: bin/lwp-request bin/lwp-mirror bin/lwp-rget
bin/lwp-download"
Thu Jan 29 21:27:31 2009: "Module" LWP::Online
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.07"
* "EXE_FILES: "
Thu Jan 29 21:27:56 2009: "Module" Win32::File
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.06"
* "EXE_FILES: "
Thu Jan 29 21:28:17 2009: "Module" File::Remove
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.42"
* "EXE_FILES: "
Thu Jan 29 21:28:21 2009: "Module" Win32::File::Object
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.01"
* "EXE_FILES: "
Thu Jan 29 21:28:45 2009: "Module" Win32::API
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.58"
* "EXE_FILES: "
Thu Jan 29 21:29:05 2009: "Module" Params::Util
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.35"
* "EXE_FILES: "
Thu Jan 29 21:29:14 2009: "Module" IPC::Run3
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.042"
* "EXE_FILES: "
Thu Jan 29 21:29:19 2009: "Module" Test::Script
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.03"
* "EXE_FILES: "
Thu Jan 29 21:29:24 2009: "Module" Win32::Env::Path
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.01"
* "EXE_FILES: script/win32envpath"
Thu Jan 29 21:29:46 2009: "Module" Parse::Binary
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.11"
* "EXE_FILES: "
Thu Jan 29 21:29:51 2009: "Module" Win32::Exe
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.11"
* "EXE_FILES: script/exe_update.pl"
Thu Jan 29 21:30:32 2009: "Module" Math::BigInt
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.89"
* "EXE_FILES: "
Thu Jan 29 21:30:52 2009: "Module" Math::BigInt::FastCalc
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.19"
* "EXE_FILES: "
Thu Jan 29 21:31:14 2009: "Module" Math::BigRat
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.22"
* "EXE_FILES: "
Thu Jan 29 21:31:37 2009: "Module" Math::BigInt::GMP
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.24"
* "EXE_FILES: "
Thu Jan 29 21:31:49 2009: "Module" XML::Parser
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.36"
* "EXE_FILES: "
Thu Jan 29 21:32:18 2009: "Module" XML::NamespaceSupport
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.09"
* "EXE_FILES: "
Thu Jan 29 21:32:28 2009: "Module" XML::SAX
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.96"
* "EXE_FILES: "
Thu Jan 29 21:32:41 2009: "Module" XML::LibXML::Common
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.13"
* "EXE_FILES: "
Thu Jan 29 21:33:01 2009: "Module" XML::LibXML
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.69"
* "EXE_FILES: "
Thu Jan 29 21:33:30 2009: "Module" PAR::Dist
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.43"
* "EXE_FILES: "
Thu Jan 29 21:33:37 2009: "Module" PAR::Dist::FromPPD
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.03"
* "EXE_FILES: bin/ppd2par"
Thu Jan 29 21:33:42 2009: "Module" PAR::Dist::InstallPPD
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.02"
* "EXE_FILES: bin/parinstallppd"
Thu Jan 29 21:34:18 2009: "Module" IO::Stringy
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.110"
* "EXE_FILES: "
Thu Jan 29 21:34:41 2009: "Module" Tree::DAG_Node
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.06"
* "EXE_FILES: "
Thu Jan 29 21:35:03 2009: "Module" Test::Warn
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.11"
* "EXE_FILES: "
Thu Jan 29 21:35:21 2009: "Module" Test::Tester
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.107"
* "EXE_FILES: "
Thu Jan 29 21:35:27 2009: "Module" Test::NoWarnings
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.084"
* "EXE_FILES: "
Thu Jan 29 21:35:34 2009: "Module" Test::Deep
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.103"
* "EXE_FILES: "
Thu Jan 29 21:35:39 2009: "Module" DBM::Deep
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.0013"
* "EXE_FILES: "
Thu Jan 29 21:35:59 2009: "Module" YAML::Tiny
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.36"
* "EXE_FILES: "
Thu Jan 29 21:36:23 2009: "Module" AutoLoader
* "installed into: C:\strawberry\perl\lib"
* "LINKTYPE: dynamic"
* "VERSION: 5.68"
* "EXE_FILES: "
Thu Jan 29 21:36:29 2009: "Module" PAR
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.984"
* "EXE_FILES: "
Thu Jan 29 21:36:34 2009: "Module" PAR::Repository::Query
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.12"
* "EXE_FILES: "
Thu Jan 29 21:36:39 2009: "Module" PAR::Repository::Client
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.21"
* "EXE_FILES: "
Thu Jan 29 21:36:49 2009: "Module" PPM
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.01_01"
* "EXE_FILES: bin/ppm.pl"
Thu Jan 29 21:37:09 2009: "Module" Number::Compare
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.01"
* "EXE_FILES: "
Thu Jan 29 21:37:19 2009: "Module" pler
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.34"
* "EXE_FILES: script/pler"
Thu Jan 29 21:37:44 2009: "Module" Data::Compare
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.21"
* "EXE_FILES: "
Thu Jan 29 21:37:50 2009: "Module" CPAN::Checksums
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 2.02"
* "EXE_FILES: "
Thu Jan 29 21:37:56 2009: "Module" File::chmod
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.32"
* "EXE_FILES: "
Thu Jan 29 21:38:01 2009: "Module" CPAN::Inject
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.11"
* "EXE_FILES: script/cpaninject"
Thu Jan 29 21:38:15 2009: "Module" pip
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.13"
* "EXE_FILES: script/pip"
Thu Jan 29 21:39:33 2009: "Module" DBI
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.607"
* "EXE_FILES: dbiproxy dbiprof dbilogstrip"
Thu Jan 29 21:40:00 2009: "Module" DBD::SQLite
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 1.14"
* "EXE_FILES: "
Thu Jan 29 21:40:20 2009: "Module" CPAN::DistnameInfo
* "installed into: C:\strawberry\perl\site\lib"
* "LINKTYPE: dynamic"
* "VERSION: 0.07"
* "EXE_FILES: "
use strict;
use warnings;
use DBI;
print map "$_\n",
DBI->available_drivers;
输出是:
- 数据库管理
- 示例P
- 文件
- Gofer
- 多路复用
- 代理
- SQLite
- 海绵
- mysql
【问题讨论】:
-
您能否尝试将
SELECT查询更改为:SELECT 111 AS keyname, 222 AS value以查看它是否会出现相同的问题。之后,您也可以提供一个显示问题的独立程序,因为不会引用您的实际表格。 -
您在问题中说提供的代码是从原始程序“修改”的。仔细检查一下,在实际程序中,你确实有
@row = $result->fetchrow_array。你描述的问题听起来像是如果你不小心写了$row = $result->fetchrow_array会发生什么。 -
请原谅我正在为 Perl 苦苦挣扎。谢天谢地,已经有 stackoverflow 了!我的理解是
@row是一个数组,因为它是用@ 而不是$ 定义的。那么语句不会:@row = $result->fetchrow_array() 将数组结果赋值给数组变量? -
@tjd,
fetchrow_array在列表上下文中被调用 -
Re "这是我从 hlstats.pl 修改的代码 sn-p",不好。向我们提供实际显示问题的代码。