Мой сценарий:Perl: Сценарий подсчета делает неправильно?
#!/usr//bin/perl
#
# Script to balance accounts between servers
# By Philip Gabrielsen
#
use strict;
use warnings;
START:
print "\nZimbra account moving script\n";
print "First we will collect data from Zimbra, this may take a while.\n\n";
my %accounts;
DATACOLLECT:
print "Collecting Zimbra mailbox server(s)... ";
my $servers = `zmprov gas mailbox`;
print "OK\n";
print "Collecting numbers of accounts per server... ";
foreach my $server (split(/\n/, $servers)) {
$accounts{$server} = `zmprov -l gaa -s $server|wc -l`;
}
print "OK\n";
foreach my $server (keys %accounts) {
print "\nServer $server with ". $accounts{$server} ." accounts\n";
}
print "TEST, is total number of accounts good?";
$accounts{'total'} = 0;
foreach my $server1 (keys %accounts) {
$accounts{'total'} = $accounts{'total'} + $accounts{$server1};
print "\nAdded $accounts{$server1} and total is now $accounts{'total'}";
}
print "\nTotal number of accounts: $accounts{'total'}\n";
Выход: [Zimbra @ змея TMP] $ Perl accounts.pl
Zimbra account moving script
First we will collect data from Zimbra, this may take a while.
Collecting Zimbra mailbox server(s)... OK
Collecting numbers of accounts per server... OK
Server snake with 363
accounts
Server tiger with 431
accounts
Server lion with 273
accounts
TEST, is total number of accounts good?
Added 363
and total is now 363
Added 431
and total is now 794
Added [[email protected] tmp]$ perl accounts.pl
Zimbra account moving script
First we will collect data from Zimbra, this may take a while.
Collecting Zimbra mailbox server(s)... OK
Collecting numbers of accounts per server... OK
Server titus.zimbra.h.bitbit.net with 363
accounts
Server tiberius.zimbra.h.bitbit.net with 431
accounts
Server otho.zimbra.h.bitbit.net with 273
accounts
TEST, is total number of accounts good?
Added 363
and total is now 363
Added 431
and total is now 794
Added 1588 and total is now 1588
Added 273
and total is now 1861
Total number of accounts: 1861 and total is now 1588
Added 273
and total is now 1861
Total number of accounts: 1861
Как первый видно, при перечислении учетной записи с каждого сервера, отображается правильное число, но в последней части, когда я хочу добавить все учетные записи в общую сумму, число 1588 всплывает, это должно быть 273 ...
Что такое линия средний 'Добавлено [zimbra @ tiberius tmp] $ perl accounts.pl', где похоже, что вы снова запускаете скрипт? – TLP