我有这个字符串:
'{"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
答案 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";