Я пытаюсь собрать некоторые снимки моей БД и сделать некоторую математику с ней, но я не в состоянии вернуть мой хэш из моей подпрограммы ...Как генерировать хэш из подпрограммы?
Как вы можете видеть, у меня есть 2 хэш% dbmcfg,% bufsnap,% dbsnap Я забил эти 3 в один хэш my% snaps = (% bufsnap,% dbmcfg,% dbsnap); , Я новичок в Perl, и я узнал, что понятие возможностей переменных контрастирует с оболочкой, где мне удается писать функции и называть их.
Im получая некоторую цель decleration переменной ошибки ........ Это возвращение хэша важен для меня, как мне нужно, чтобы передать его другие функции и сделать некоторую математику в подмножестве рутинного
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
sub snapshots() {
my @tmpdbmcfg = grep /=/,`db2 "get snapshot for dbm"`;
my %dbmcfg;
foreach (@tmpdbmcfg) {
chomp;
s/^\s*//;
s/\s*$//;
my ($col3,$col4) = split /\s*=\s*/,$_,2;
$dbmcfg{$col3}=$col4;
}
#print Dumper(\%dbmcfg);
#if ($dbmcfg{'Max agents overflow'} != 0) {
#print "fine\n";
#} else {print "Not\n"; }
my @tmpbufarr=grep /=/,`db2 "get snapshot for bufferpools on awdrt"`;
my %bufsnap;
foreach (@tmpbufarr) {
chomp;
s/^\s*//;
s/\s*$//;
my ($bufsnapkey,$bufsnapval) = split /s*=s*/,$_,2;
$bufsnap{$bufsnapkey} = $bufsnapval;
}
my @tmpdbarr =grep /=/,`db2 "get snapshot for db on awdrt"`;
my %dbsnap;
foreach (@tmpdbarr) {
chomp;
s/^\s*//;
s/\s*$//;
my ($dbsnapkey,$dbsnapvalue) = split /s*=s*/,$_,2;
$dbsnap{$dbsnapkey} = $dbsnapvalue;
}
my %snaps = (%bufsnap,%dbmcfg,%dbsnap);
#print Dumper(\%snaps);
return (\%snaps);
}
&snaps;
#print Dumper(\%snapis);
Помощь оценивается ..........
Добавить правильный отступ. Это сделает вещи в 10 раз легче для вас и для нас. – TLP
Ваша подпрограмма - это моментальные снимки, но вы называете это снимками? Кроме того, возвращаемое значение не собирается. – Guru