Получение ошибки при попытке выгрузить часть многомерного хеш-массива. Perl выплевывает
Невозможно использовать строку ("somedata") в качестве ссылки ARRAY, в то время как используются "строгие ссылки" на ./myscript.pl
Я пробовал несколько способов доступа к частимассива, который я хочу видеть, но я всегда получаю ошибку. Я использовал Dumper для просмотра всего массива, и он выглядит отлично.
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper qw(Dumper);
use String::Util qw(trim);
my %arrHosts;
open(my $filehdl, "<textfile.txt") || die "Cannot open or find file textfile.txt: $!\n";
while( my $strInputline = <$filehdl> ) {
chomp($strInputline);
my ($strHostname,$strOS,$strVer,$strEnv) = split(/:/, $strInputline);
$strOS = lc($strOS);
$strVer = trim($strVer);
$strEnv = trim($strEnv);
$strOS = trim($strOS);
$arrHosts{$strOS}{$strVer}{$strEnv} = $strHostname;
}
# If you want to see the entire database, remove the # in front of Dumper
print Dumper \%arrHosts;
foreach my $machine (@{$arrHosts{solaris}{10}{DEV}}) {
print "$machine\n";
}
close($filehdl);
Данные находятся в форме машины: ОС: Версия ОС: Среда
Например
bigserver:solaris:11:PROD
smallerserver:solaris:11:DEV
Я хочу распечатать только серверы Solaris версии 11 в DEV. Использование хешей кажется самым простым способом хранения данных, но, увы, Perl преграждает попытки распечатать только их часть. Самосвал работает отлично, но я не хочу видеть все. Где я ошибся ??