使用Perl从复杂字符串中分离变量

时间:2015-05-06 20:12:01

标签: string facebook perl

我有一个像这样的字符串,从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中删除,现在我正在努力使用子字符串或哈希来分离变量。

1 个答案:

答案 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将哈希引用转换为上述字符串。这将是处理数据的更合适的地方。