Как я могу создать вложенный хеш как константу в Perl?

Первый ответ, который Вы дали использованию, что известно как синтаксис соединения ANSI, другой, действителен и будет работать в любой реляционной базе данных.

я соглашаюсь с grom, что необходимо использовать синтаксис соединения ANSI. Как они сказали, главная причина для ясности. Вместо того, чтобы иметь где пункт с большим количеством предикатов, некоторые из которых объединяющие таблицы и другие, ограничивающие строки, возвращенные с ANSI, присоединяются к синтаксису, который Вы заставляете его ослепляюще очистить, какие условия используются для присоединения к таблицам и которые используются для ограничения результатов.

5
задан Axeman 8 October 2010 в 21:10
поделиться

4 ответа

Вы можете использовать модуль Hash :: Util , чтобы заблокировать и разблокировать хэш (ключи, значения или и то, и другое) ).

package Foo;
use Hash::Util;

our %MY_CONST = (
    foo => 'bar',
    baz => {
        innerbar => 'bleh',
    }
);

Hash::Util::lock_hash_recurse(%MY_CONST);

Затем в другом файле:

use Foo;
my $b = $Foo::MY_CONST{baz}{innerbar};
8
ответ дан 18 December 2019 в 06:36
поделиться

См. Только для чтения :

#!/usr/bin/perl

package Foo;

use strict;
use warnings;

use Readonly;

Readonly::Hash our %h => (
    a => { b => 1 }
);

package main;

use strict;
use warnings;

print $Foo::h{a}->{b}, "\n";

$h{a}->{b} = 2;

Вывод:

C:\Temp> t
1
Modification of a read-only value attempted at C:\Temp\t.pl line 21
4
ответ дан 18 December 2019 в 06:36
поделиться

Вы также можете сделать это полностью с помощью встроенных команд:

package Foo;
use constant MY_CONST =>
{
    'foo' => 'bar',
    'baz' => {
        'innerbar' => 'bleh',
    },
};

sub some_method
{
    # presumably $a is defined somewhere else...
    # or perhaps you mean to dereference a parameter passed in?
    # in that case, use ${$_[0]} = MY_CONST->{foo} and call some_method(\$var);
    $a = MY_CONST->{foo};
}

package Main;  # or any other namespace that isn't Foo...
# ...
my $b = Foo->MY_CONST->{baz}{innerbar};
11
ответ дан 18 December 2019 в 06:36
поделиться

Вот руководство по хешам в Perl. Хэш хэшей

1
ответ дан 18 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: