任何人都可以向我解释Perl中以下结构之间的区别:
$VAR = {"user" => "text", "id" => "textid"};
$VAR = {"user" : 4, "code" : "codetext"};
我如何访问每个结构的值?
答案 0 :(得分:5)
$VAR = {"user" => "text", "id" => "textid"};
此处$ VAR是一个哈希引用,其中包含2个键(user
和id
),其值分别为text
和textid
。
访问hashref数据
#!/usr/bin/perl
use strict;
use warnings;
my $hashref = {"user" => "text", "id" => "textid"};
foreach my $key (keys %$hashref){
print "Key: $key and Value: $hashref->{$key}";
}
$VAR = {"user" : 4, "code" : "codetext"};
这不是有效的语法,如果use strict; use warnings;
,您将收到错误。我认为这是JSON数据的转储。如果是这种情况,您需要使用CPAN上的可用JSON modules解析JSON。 simbabque向您展示了如何使用JSON module解析JSON。
答案 1 :(得分:4)
第一个是哈希引用,里面有两个键。
$VAR = {"user" => "text", "id" => "textid"};
您可以使用解除引用运算符->
或使用${ ... }
语法来访问它。因为它只有一个深度,{}
可以省略。
my $id = $VAR->{id}; # textid
my $user = $$VAR{user}; # text
在perlreftut了解详情。
第二个是无效的Perl语法。它看起来像是JSON。也许它没有反序列化呢?
使用JSON module对其进行反序列化,最终得到第一个。
use JSON 'decode_json';
# 'note the quotes'
my $VAR = '{"user" : 4, "code" : "codetext"}';
my $perl_data_structure = decode_json($VAR);
my $user = $perl_data_structure->{user};