-1

私はこの文字列を持っています:
'{"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

4

3 に答える 3

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}
于 2013-02-07T21:20:12.910 に答える
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";
于 2013-02-08T02:34:58.123 に答える
1

別の方法は、tr演算子を使用することです。

$str =~ tr/"//d;
于 2013-02-07T21:22:28.480 に答える