#json #perl #dictionary #hash
#json #perl #словарь #хэш
Вопрос:
Мне нужно открыть файл с помощью JSON и прочитать 2 переменные, а также присвоить значения переменным в моей программе. Как это сделать?
sub Config {
my $filename = 'perl_config.txt';
my $json_text = do {
open(my $json_fh, "<:encoding(UTF-8)", $filename)
or die("Can't open $filename": $!n");
local $/;
<$json_fh>
};
my $json = JSON->new;
my $data = $json->decode($json_text);
for my $key (sort keys %{$data}) {
print "${key}:"; #how to acces to data by these keys?
print "n";
}
Мой файл json выглядит следующим образом:
{
"local_host": "localhost",
"local_port": "6000"
}
Ответ №1:
$data
является хэш-ссылкой. Вы можете получить доступ к каждому значению из его ключа точно так же, как вы бы поступили с обычным хэшем, поэтому:
for my $key (sort keys %{$data}) {
print "$key = ", $data->{$key}, "n";
}
Комментарии:
1. Не могли бы вы сказать мне, как взять первый, второй …. и т.д.? Это происходит в цикле, но я могу иметь доступ, например, в array [0], array [5] и т. Д
Ответ №2:
Этого должно быть достаточно, чтобы вы туда попали:
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use JSON;
my $json = do { local $/; <DATA> };
my $data = JSON->new->decode($json);
say "Host is: $data->{local_host}";
say "Port is: $data->{local_port}";
__DATA__
{
"local_host": "localhost",
"local_port": "6000"
}