データベースのスナップショットをいくつか収集して計算しようとしていますが、サブルーチンからハッシュを返すことができません...
ご覧のとおり、2 つのハッシュ %dbmcfg,%bufsnap,%dbsnap があります。これら 3 つを 1 つのハッシュにまとめました。 %snaps =(%bufsnap,%dbmcfg,%dbsnap); 、私はPerlを初めて使用し、変数のスコープの概念があることを知りました.シェルとは対照的に、関数を記述して呼び出すことに成功しています.
私は変数エラーのいくつかの目標宣言を取得しています........この返すハッシュは、別の関数に渡し、そのサブルーチンでいくつかの計算を行う必要があるため、私にとって重要です
#!/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);
助けていただければ幸いです........