С помощью этой функции отображения CouchDB создаст индекс B-дерева на основе doc.name
со значением doc.age
, а также сохранит doc._id
где-то там. Таким образом, он не будет дублировать целые doc
, но будет хранить эти поля и, возможно, что-то еще в данных индекса.
perl -MSome::Module -e ';'
Упс, неправильно прочитал вопрос. Я думал, что вы хотели бы знать в единственном экземпляре, не обнаруживая это в извлекаемой форме. Я всегда использую что-то вроде этого:
sub try_load {
my $mod = shift;
eval("use $mod");
if ($@) {
#print "\$@ = $@\n";
return(0);
} else {
return(1);
}
}
, который вы используете следующим образом:
$module = 'Some::Module';
if (try_load($module)) {
print "loaded\n";
} else {
print "not loaded\n";
}
Как вы устанавливаете свой скрипт? Если вы используете стандартный Makefile.PL или Build.PL, перечисление зависимостей тривиально.
Как насчет:
die "Some::Module missing!" unless(eval{require Some::Module});
I use something like this:
BEGIN {
my $module_name = shift; # @ARGV
our $module_exp = $module_name;
eval "use $module_name;";
}
$module_exp =~ s{::}{/}g;
foreach my $key ( grep { m/^$module_exp\./ } keys %INC ) {
print "$key => $INC{$key}\n";
}
But I use this more in the form of a korn shell function:
function wherperl
{
perl -M$1 <<EX_DOC
my \$module = '$1';
\$module =~ s/::/\\//g;
for ( keys %INC ) {
next unless m/^\$module\./;
print \$_ . ' => ' . \$INC{\$_} . "\n";
}
EX_DOC
}
I у меня есть небольшой скрипт, который перечисляет все модули Perl в моей системе;
#!/usr/bin/perl
use ExtUtils::Installed;
my $instmod = ExtUtils::Installed->new();
foreach my $module ($instmod->modules()) {
my $version = $instmod->version($module) || "???";
print "$module -- $version\n";
}
Внутри этого цикла foreach вы можете захотеть сделать что-то вроде:
my $match;
if ($module =~ /$match/) {
print "Found $match: $module\n";
}
Мне нравится использовать утилиту cpan
:
% cpan -D YAML
YAML
-------------------------------------------------------------------------
YAML Ain't Markup Language (tm)
A/AD/ADAMK/YAML-0.70.tar.gz
/usr/local/perls/perl-5.10.0/lib/site_perl/5.10.0/YAML.pm
Installed: 0.68
CPAN: 0.70 Not up to date
Ingy dot Net (INGY)
ingy@cpan.org
Это может быть немного медленным, поскольку для получения некоторых данных необходимо подключиться к зеркалу CPAN, но Еще у меня есть локальное зеркало CPAN. :)