2013-02-07 39 views
-1

返回一個字,我有這個字符串:
'{"file_type":"/video/2012/09/10/prn-exceo.jpg"}'
我想有:
'{file_type:/video/2012/09/10/prn-exceo.jpg}'
嘗試:
$str=~m/\"(.+)\"/$str=~ s/"//g;
什麼我做錯了Perl中刪除「字符串和JSON

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

這是JSON嗎?可能JSON解析器更適合於任何您的基礎需求? –

+0

你對它是傑森。現在我有一個* parsererror *,因爲我試圖像這樣返回'prn-exceo.jpg'' my $ json = JSON-> new-> allow_nonref-> encode('prn-exceo.jpg');'。任何幫助apreciated – mamesaye

+0

我認爲你不正確地使用它,也許編輯你的問題,問你在做什麼,你是如何做的問題。這是一個典型的XY問題。當你的問題實際上是Y時,你正在尋求X的幫助。請告訴我們Y :-) –

回答

3

你沒有做錯什麼。替代做你想要的。

[email protected] ~ $ 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; 
~ : 
[email protected] ~ $ perl x.pl 
{file_type:/video/2012/09/10/prn-exceo.jpg} 
1

另一種方法是使用tr操作:

$str =~ tr/"//d; 
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";