Perl-массив объектов
вопрос Noob здесь.
Я уверен, что ответ будет создавать объекты и хранить их в массиве, но я хочу посмотреть, есть ли более простой способ.
в нотации JSON я могу создать массив объектов, например:
[
{ width : 100, height : 50 },
{ width : 90, height : 30 },
{ width : 30, height : 10 }
]
хороший и простой. С этим не поспоришь.
Я знаю, что Perl не JS, но есть ли более простой способ дублировать массив объектов, а затем создать новый "класс", новые объекты и нажать их в массиве?
I угадайте, что сделало бы это возможным, - это нотация типа объектного литерала, которую предоставляет JS.
или есть другой способ сохранить два значения, как указано выше? Я думаю, у меня может быть только два массива, каждый со скалярными значениями, но это кажется уродливым...но гораздо проще, чем создать отдельный класс и все такое дерьмо. Если бы я писал Java или что-то еще, тогда нет проблем, но я не хочу беспокоиться обо всем этом, когда я просто пишу небольшой скрипт.
3 ответов
вот начало. Каждый элемент @list
array-это ссылка на хэш с ключами "width"и " height".
#!/usr/bin/perl
use strict;
use warnings;
my @list = (
{ width => 100, height => 50 },
{ width => 90, height => 30 },
{ width => 30, height => 10 }
);
foreach my $elem (@list) {
print "width=$elem->{width}, height=$elem->{height}\n";
}
массив хэшей сделал бы это, что-то вроде этого
my @file_attachments = (
{file => 'test1.zip', price => '10.00', desc => 'the 1st test'},
{file => 'test2.zip', price => '12.00', desc => 'the 2nd test'},
{file => 'test3.zip', price => '13.00', desc => 'the 3rd test'},
{file => 'test4.zip', price => '14.00', desc => 'the 4th test'}
);
тогда доступ к нему так
$file_attachments[0]{'file'}
для получения дополнительной информации ознакомьтесь с этой ссылкой http://htmlfixit.com/cgi-tutes/tutorial_Perl_Primer_013_Advanced_data_constructs_An_array_of_hashes.php
почти так же, как вы делаете это в JSON, на самом деле используйте JSON и Data:: Dumper модули для получения вывода из вашего JSON, который вы могли бы использовать в своем коде Perl:
use strict;
use warnings;
use JSON;
use Data::Dumper;
# correct key to "key"
my $json = <<'EOJSON';
[
{ "width" : 100, "height" : 50 },
{ "width" : 90, "height" : 30 },
{ "width" : 30, "height" : 10 }
]
EOJSON
my $data = decode_json($json);
print Data::Dumper->Dump([$data], ['*data']);
выходы
@data = (
{
'width' => 100,
'height' => 50
},
{
'width' => 90,
'height' => 30
},
{
'width' => 30,
'height' => 10
}
);
и все, что не хватает мой