Perl новичок здесь ... У меня была помощь с этим рабочим скриптом perl с некоторым кодом HASH, и мне просто нужна помощь в понимании этого кода, и если бы он мог быть написан так, что я бы понял использование HASHES проще или визуально?помогите понять perl hash
Таким образом, скрипт выполняет регулярное выражение для фильтрации по дате, а остальное регулярное выражение будет извлекать данные, относящиеся к этой дате.
use strict;
use warnings;
use constant debug => 0;
my $mon = 'Jul';
my $day = 28;
my $year = 2010;
my %items =();
while (my $line = <>)
{
chomp $line;
print "Line: $line\n" if debug;
if ($line =~ m/(.* $mon $day) \d{2}:\d{2}:\d{2} $year: ([a-zA-Z0-9._]*):.*/)
{
print "### Scan\n" if debug;
my $date = $1;
my $set = $2;
print "$date ($set): " if debug;
$items{$set}->{'a-logdate'} = $date;
$items{$set}->{'a-dataset'} = $set;
if ($line =~ m/(ERROR|backup-date|backup-size|backup-time|backup-status)[:=](.+)/)
{
my $key = $1;
my $val = $2;
$items{$set}->{$key} = $val;
print "$key=$val\n" if debug;
}
}
}
print "### Verify\n";
for my $set (sort keys %items)
{
print "Set: $set\n";
my %info = %{$items{$set}};
for my $key (sort keys %info)
{
printf "%s=%s;", $key, $info{$key};
}
print "\n";
}
То, что я пытаюсь понять эти строки:
$items{$set}->{'a-logdate'} = $date;
$items{$set}->{'a-dataset'} = $set;
И снова пару линий вниз:
$items{$set}->{$key} = $val;
Это пример ссылки на хэш? хэш хешей?
Я думаю, я запутался с использованием {$} множества :-(
Если вы еще не прочитали [perldoc perlreftut] (http://perldoc.perl.org/perlreftut.html) и [perldoc perldsc] (http://perldoc.perl.org/perldsc.html), они были бы хорошие места для начала. – hobbs
@hobbs - спасибо, есть хорошие примеры. – jdamae