小编waw*_*awa的帖子

这是什么样的数据格式?

我有一堆以下形式的数据文件:

("String"
    :tag1 (value)
    :tag2 (value2)
    :tag3 (
        :nested_tag1 (foo)
        :nested_tag2 (
            :nested2_tag1 (
                 : ( nested3_tag1
                          :baz (true)
                          :qux ("a really long block of text")

                 )
            )
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

这只是一个小例子.真实文件有数千行.

原谅我的无知,但我不承认格式.这是一种常见或已知的格式吗?它有名字吗?

我想用Perl处理它,并想知道是否有任何外部模块可以让我轻松将其转换为Perl数据结构 - 我不必自己编写Parser.毕竟,为什么重新发明轮子!;-)

perl data-structures perl-data-structures

6
推荐指数
1
解决办法
188
查看次数

使用内联包继承常量

好.我在尝试继承任何子类的父类中设置的常量时遇到问题.

#!/usr/bin/perl
use strict;
use warnings;

package Car;
use Exporter qw( import );
our @EXPORT_OK = ( 'WHEELS', 'WINGS' );

use constant WHEELS => 4;
use constant WINGS  => 0;

sub new {
    my ( $class, %args ) = @_;
    my $self = {
        doors  => $args{doors},
        colour => $args{colour},
        wheels => WHEELS,
        wings  => WINGS,
    };
    bless $self, $class;
    return $self;
}

package Car::Sports;
use base qw( Car );

sub new {
    my ( $class, %args ) = @_; …
Run Code Online (Sandbox Code Playgroud)

perl

5
推荐指数
1
解决办法
2390
查看次数

将Perl对象的类更改为子类

我有一个OO设计问题.我在下面写了(伪)-pseudocode来帮助说明我的问题.(我说"伪伪代码",因为它大部分是正确的,只有几点废话...)

我正在使用Factory模式来创建适合于我传递Factory::new方法的属性的类的对象.但是,有一些属性我只能在创建对象后获得,然后我想用它来进一步子类化或"特化"对象的类型.我想这样做,所以我可以使用相同的接口来main独立于对象类的所有对象(我猜这是polymorphism).

首先,工厂类:

use strict;
use warnings;

package Vehicle::Factory;
sub new {
    my ( $class, $args ) = @_;
    if ( $args->{class} =~ /car/i ) {
        return Vehicle::Car->new($args);
    } else {
    # other possible subclasses based on attributes
    }
}
1;
Run Code Online (Sandbox Code Playgroud)

现在为关联的类:

package Vehicle;
sub new {
    my ( $class, $args ) = @_;
    bless $self, $class;
    $self->color( $args->color );
}

sub color {
    $_[1] ? $_[0]->{_color} = $_[1] : return $_[0]->{_color};
}

sub …
Run Code Online (Sandbox Code Playgroud)

oop perl object

4
推荐指数
3
解决办法
2118
查看次数

帮助步行/排序复杂的Perl数据结构(HoH with AoH fun)

我现在一直在靠墙撞墙几个小时.

我有一个看起来像这样的数据结构(从"Data :: Dumper"输出).这是我自己的错,我正在创建数据结构,因为我正在解析一些输入.

print Dumper $data;

___OUTPUT___
$VAR = { 'NAME' => {
                    'id' => '1234',
                    'total' => 192,
                    'results' =>  { 
                                     'APPLE'   => 48 ,
                                     'KUMQUAT' => 61 ,
                                     'ORANGE'  => 33 ,
                                  }
                   }

       }
Run Code Online (Sandbox Code Playgroud)
  • 有数千个"NAME"键.
  • 只有一个"id"和一个"total".
  • "结果"哈希中可能有一个或多个键/值对.

我想打印出逗号分隔列表,首先按"total"排序,然后按"results"数组中每个散列的值排序.

以下代码用于从已存储的数据结构中打印出CSV.

use strict;
use warnings;
# [...lots of other stuff...]

open (my $fh, >out.csv);
print $fh "Name, ID, Label, Count, Total\n";

foreach ( sort { $data->{$b}->{total} <=> $data->{$a}->{total} }
    keys %{$data} )
{
    my $name = $_;
    foreach …
Run Code Online (Sandbox Code Playgroud)

perl perl-data-structures

3
推荐指数
1
解决办法
1858
查看次数

用'||'评估语句 在Perl

有人可以解释一下这里发生了什么吗?

我尽可能地简化了.

( 1 || 2 == 1 )     is TRUE (as expected)
( 1 || 2 == 2 )     is TRUE (as expected)
Run Code Online (Sandbox Code Playgroud)

我也希望以下两者都是正确的(但这可能表明缺乏理解......)

( 1 == ( 1 || 2 ) ) is TRUE  
( 2 == ( 1 || 2 ) ) is FALSE <--- !!! I don't understand this..
Run Code Online (Sandbox Code Playgroud)

现在它开始有点奇怪......

( 2 == 1 || 2 )     is TRUE  
( 3 == 1 || 2 )     is TRUE  <--- !!! I don't understand this..
Run Code Online (Sandbox Code Playgroud)

经过一番戏剧之后,我发现以下内容:

( …
Run Code Online (Sandbox Code Playgroud)

perl

3
推荐指数
4
解决办法
139
查看次数