URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5695
[ Назад ]

Исходное сообщение
"передача хэш массива"

Отправлено Ром , 07-Сен-06 08:35 
вечер добрый...
не получается передать хэш массив пакету(модулю), пожалуйста помогите...
конструктор:

sub new {
    my $class = shift;
    my ($self,%common) = @_;
    $self = {
        data => {},
        error => 0,
    };
    $self->{'error'} = $common{'error'} if $common{'error'};
    bless ($self, $class);
    return $self;
}

до хэша, который я в него передаю можно добраться только через $self{data}{чтототам}

sub foo {
    my $self = shift;
    if (@_) {$self{data} = shift;}
    print $self{data}{чтототам};
}

Хэш передается так:

    my $use = Pkg -> new();
    $use -> foo( \%hash );

возможно ли, сделать так, чтобы обращение к хэшу выглядело $self{чтототам}, но при этом работал и $self{error}..
сори, что путано, терминологией не владею... =))
заранее благодарен....


Содержание

Сообщения в этом обсуждении
"передача хэш массива"
Отправлено madskull , 07-Сен-06 09:29 

>sub foo {
>    my $self = shift;
>    if (@_) {$self{data} = shift;}
>    print $self{data}{чтототам};
>}
>
Надо использовать $self->{data}. Везде.

Делая $self{data} = shift создается новый хэш %self, который, естессно, умирает при выходе из области видимости.

Советую использовать use strict, тогда не будет таких ошибок.


"передача хэш массива"
Отправлено Ром , 07-Сен-06 16:05 
>Надо использовать $self->{data}. Везде.
>
>Делая $self{data} = shift создается новый хэш %self, который, естессно, умирает при
>выходе из области видимости.
>
>Советую использовать use strict, тогда не будет таких ошибок.
О! =))
Спасибо... =))