我有一个像这样的字符串,从Facebook API调用返回。
"'link' => 'https://www.facebook.com/app_scoped_user_id/123456789/', 'timezone' => '5.5', 'name' => 'John Smith', 'locale' => 'en_GB', 'last_name' => 'Smith', 'email' => 'myemail@hotmail.com', 'updated_time' => '2015-05-05T15:35:31+0000', 'verified' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ), 'id' => '123456789', 'birthday' => '05/01/1956', 'first_name' => 'John', 'gender' => 'male'"
我想使用Perl将变量分开,例如。创建将包含该值的变量,如下所示:
$link = 'https://www.facebook.com/app_scoped_user_id/123456789/'
$name = 'John Smith'
等
花了几个小时最终将字符串从Facebook中删除,现在我正在努力使用子字符串或哈希来分离变量。
答案 0 :(得分:3)
... bless( do{(my $o = 1)}, 'JSON::PP::Boolean' ), ...
是赠品,这是Data::Dumper
输出,它已经是Perl可读表达式。用大括号包裹它,eval
它,你有自己的哈希引用。
my $fb_output = "'link' => ... 'gender' => 'male'";
my $hashref = eval "{$fb_output}";
print "The last name is ", $hashref->{last_name}, "\n";
...
您的代码中有一个或两个级别,您可能正在从Facebook接收JSON字符串,将其解码为哈希引用,然后使用Data::Dumper
将哈希引用转换为上述字符串。这将是处理数据的更合适的地方。