LINUX.ORG.RU

Perl. Распарсит хеш, переданный в качетсве аргумента.

 


0

1

Есть хешь, он передается в функцию. Как из функции получить доступ к значениям ключей хеша?


sub test_sub {
  my $my_hash = shift;

  print $my_hash{"key"};
}

my %h = ("key" => "hello");
test_sub(%h);

Вышеобозначенный код не работает.


Передавай хеш в функцию по ссылке.

#!/usr/bin/perl
#

use strict;
use warnings;

sub test_sub {
    my $hash = shift;

    print $$hash{key};
}

my %h = (
    key => 'hello'
);

test_sub(\%h);

shell-script ★★★★★ ()
Ответ на: комментарий от nonimous

Не знаешь языка - не советуй. Твой вариант вылетит с ошибкой. Иди пиши на питоне.

shell-script ★★★★★ ()
Ответ на: комментарий от nonimous

s/$my_hash/%my_hash/g

Только в объявлении, если, конечно, ты не считаешь шестой перл самым живым из всех перлов.

thriller ★★ ()
Ответ на: комментарий от outtaspace

или так:

test_sub({key => 'value'});

sub test_sub {
    my $param_hashref = shift;
    print $param_hashref->{'key'};
}
outtaspace ★★★ ()

Начиная с версии 5.20 можно так:

#!/usr/bin/perl
use feature qw(say signatures);

sub test(%test) {
  say keys %test;
}

%a = ( x => '1', y => '2', z => '3' );
test(%a);

redgremlin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.