Perl -对象数组

0wi1tuuw  于 2023-05-18  发布在  Perl
关注(0)|答案(3)|浏览(167)

Noob提问
我确信答案是创建对象,并将它们存储在数组中,但我想看看是否有更简单的方法。
在JSON表示法中,我可以创建一个对象数组,如下所示:

[
  { width : 100, height : 50 },
  { width : 90, height : 30 },
  { width : 30, height : 10 }
]

简单又漂亮。别争了。
我知道Perl不是JS,但是有没有更简单的方法来复制一个对象数组,然后创建一个新的“类”,新建对象,并将它们放入数组中?
我想这可能是JS提供的对象文字类型符号。
或者,是否有其他方法可以存储两个值,就像上面的那样?我想我可以有两个数组,每个数组都有标量值,但这看起来很丑...但比创建一个单独的类容易得多,以及所有这些废话。如果我在写Java或其他东西,那就没问题了,但是当我只是写一个小脚本时,我不想被所有这些困扰。

rggaifut

rggaifut1#

这是个开始@list数组中的每个元素都是对具有键“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";
}

然后你可以向数组中添加更多的元素:

push @list, { width => 40, height => 70 };
voj3qocg

voj3qocg2#

一个散列数组就可以了,就像这样

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

guicsvcw

guicsvcw3#

实际上,使用JSONData::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
          }
        );

而所有的都是我的

相关问题