perl删除“在字符串中并从json返回一个单词

时间:2013-02-07 21:16:19

标签: regex json perl

我有这个字符串:
 '{"file_type":"/video/2012/09/10/prn-exceo.jpg"}'
 我想要:
'{file_type:/video/2012/09/10/prn-exceo.jpg}'
  试过:
$str=~m/\"(.+)\"/$str=~ s/"//g;
我做错了什么?

UPDATE
一个json调用给了我这个字符串:
'{"file_type":"/video/2012/09/10/prn-exceo.jpg"}'
我试图像这样返回prn-exceo.jpg
my $json = JSON->new->allow_nonref->encode('prn-exceo.jpg');

但我有parsererror

3 个答案:

答案 0 :(得分:3)

你没有做错任何事。替换做你想要的。

david@elgin ~ $ cat x.pl
use strict;
use warnings;
use v5.14;

my $str = '{"file_type":"/video/2012/09/10/prn-exceo.jpg"}';
$str=~ s/"//g;
say $str;
~ :
david@elgin ~ $ perl x.pl
{file_type:/video/2012/09/10/prn-exceo.jpg}

答案 1 :(得分:1)

另一种方法是使用tr运算符:

$str =~ tr/"//d;

答案 2 :(得分:1)

听起来我对你使用JSON非常不正确。让我看看如果我理解正确,你从一些外部源获取包含JSON的字符串,然后你想从file_type键获取值。在这种情况下,您需要解码JSON字符串,而不是对其进行编码。

#!/usr/bin/env perl

use strict;
use warnings;

use JSON;

my $json_string = '{"file_type":"/video/2012/09/10/prn-exceo.jpg"}';

my $data = JSON->new->decode($json_string);
my $file = $data->{file_type};

print $file . "\n";

# if you just want the filename then use 

use File::Basename;

my $filename = fileparse $file;

print $filename . "\n";