如何使用perl脚本显示与mongodb相关的所有数据库

如何使用perl脚本显示与mongodb相关的所有数据库,mongodb,perl,Mongodb,Perl,有人能帮我用Perl脚本显示所有MongoDB数据库吗 我连接到了MongoDB,我被困在这里了 我的代码如下: 使用MongoDB; 使用MongoDB::OID; 使用数据::转储程序; 严格使用; 使用警告; 使用lib“.”; 使用出口商qw(进口); 我们的@EXPORT_OK=qw(出纳员); 我的$client=MongoDB::MongoClient->new( host=>localhost', 端口=>27020 ); my$db_list=listDatabases();

有人能帮我用Perl脚本显示所有MongoDB数据库吗

我连接到了MongoDB,我被困在这里了

我的代码如下:

使用MongoDB;
使用MongoDB::OID;
使用数据::转储程序;
严格使用;
使用警告;
使用lib“.”;
使用出口商qw(进口);
我们的@EXPORT_OK=qw(出纳员);
我的$client=MongoDB::MongoClient->new(
host=>localhost',
端口=>27020
);
my$db_list=listDatabases();
foreach my$n($#db#u列表){
说$db_list[$n];
}
但我得到了一个错误:

全局符号“@db_list”需要显式的包名

这两行有很多错误

my $db_list = listDatabases();
foreach my $n ($#db_list) { say $db_list[$n]; }
错误是由同名数组变量和标量变量之间的混淆引起的

my$db\u list
声明一个标量变量。但是
$#db_list
引用了一个名为
@db_list
的数组。你的意思可能是
${$db\u List}
。但即使这样也不能满足您的需要,因为
foreach my$n($#{$db_list})
在包含单个项的列表中迭代。我想你可能想要:

foreach my $n (0 .. $#{$db_list})
这里有一些猜测,因为我不知道您的
listDatabases()
子例程是如何工作的。您的行为就像它返回一个数组引用,但它可能返回一个数组,您的代码应该是:

# Note: array, not scalar
my @db_list = listDatabases();
foreach my $n (0 .. $#db_list) { say $db_list[$n]; }
如果不进一步了解
listDatabases()
,就无法确定

我要注意的是,它有一个名为
database\u names()
的方法。你可以这样使用:

my @db_list = $client->database_names;
foreach my $n (0 .. $#db_list) { say $db_list[$n]; }

你好像写了一个科学怪人的怪物程序。它似乎同时是一个程序和一个模块。它尝试导出未定义的
teller
,但也有一个
for
循环,该循环尝试迭代未声明或定义的数组
@db_list
的(最后一个索引)。您还可以调用
listDatabases
,它也没有定义。你必须准确地说出你在这里想要做什么,因为“所有MongoDB数据库”并不意味着你的建议对我有多大帮助。。谢谢你much@Madhu如果我的建议有用,请考虑赞成或接受我的回答。