Ну, так как я не php-программист, я просто могу сказать вам, что означает Perl-код. Может быть, это поможет вам немного дальше!
#an query to the Database was fired through the DBI-module from Perl
#the result is temporarily stored in the $query but has to be fetched
#before further use. Since the result could contain multiple rows the $data
#is filled with each row while the ->fetchrow_hashref() function returns a hash of
#data representing one returned row of the query. The keys of the hash are the column
#names of the database-table
while(my $data = $query->fetchrow_hashref){...}
@
указывает массив в Perl. Таким образом, @oid_list
рассматривается как один. Поэтому в него можно нажать значение $data->{oid}
(push @oid_list, $data->{oid}
).
Синтаксис $data->{oid}
немного сложнее. Представьте себе, что $data
является ссылкой (просто указателем) на хеш (или на других языках, таких как Java, называемых Map). Но вы скорее хотите получить доступ к хеш-адресу за этой ссылкой. Таким образом, вы используете ->
в разыменовываете указатель и получаете доступ к реальному хешу, указывающему на $data
. К $data->{oid}
вы получаете значение за ключом oid
в Hashreferenceby $data
.
Аналогичная вещь происходит в push @{$snmp_order->{$sensor}}, $data->{function};
. Но здесь вам сначала нужно получить доступ к реальному массиву за ссылкой $snmp_order->{$sensor}
. Здесь ключ ссылочного хеша содержит ссылку с массивом, которая получает в нее значение $data->{function};
.
Остальная часть кода является видом этих двух вещей. Программист просто назначает разные значения из выбранной строки базы данных $data
на разные ключи большой хэш-справки $oid_hash
. В пределах {}
вы всегда найдете имя ключа, к которому осуществляется доступ.
Спросите у парня, который его разработал, может быть? –
@CaelanGrgurovic Я не знаю, где вы работали в прошлом, но со мной слишком часто случалось, что оригинального программиста уже не вокруг, чтобы помочь! –
[perlreftut] (http://p3rl.org/perlreftut), [perlref] (http://p3rl.org/perlref), [perllol] (http://p3rl.org/perllol), [perldsc] (http://p3rl.org/perldsc). – choroba