2013-03-19 92 views
-4

我有我的字符串如下,我想刪除第一個{沒有任何東西只有第一個是字符串的開始。字符串在替換之前打印得很好,但在替換空字符串之後。Perl字符串替換?

use strict; 
use warnings; 

my $string = {"something":[{"some":"12","some":"something","data":"","data":"data2","age":"23"},{......},{.....}]} 

# the string is valid as it is json from some array function. 

print $string."\n"; #My string prints fine here 
$string = s/\{//; 

print "String after replacement".".$string." testing"; 
+4

從技術上講,在這種情況下'$ string'是一個散列引用,而不是一個字符串。 – redbmk 2013-03-19 22:07:41

+2

這不是你的原始代碼,因爲這段代碼不能編譯。 '$ string'賦值是一個未加引號的json字符串,最後一個'print'語句包含5個引號。除了您遇到問題的確切代碼之外,不要發佈任何內容。 – TLP 2013-03-19 22:22:01

回答

5

而不是試圖手動與JSON一塌糊塗,我強烈建議你使用現有的,測試,調試JSON模塊中的JSON讀取,修改數據結構,並將其寫回。

請參閱JSON爲一個模塊,將爲您做。

+2

還有https://metacpan.org/module/JSON::XS,我想它比'JSON'更快# – 2013-03-19 22:08:05

+1

'JSON :: XS'也比'JSON'更好地處理utf-8 – redbmk 2013-03-19 22:09:15

2

替換:

$string = s/\{//; 

有:

$string =~ s/\{//; 
+0

哦,我花了一半一個小時計算出昨天...;) – kjprice 2013-03-19 22:06:46

+0

謝謝,它的工作。我想要這個簡單的答案。 – mysteriousboy 2013-03-19 22:12:16

1

正如線程之前所述,另一種方法是使用JSON::XS模塊,這將是 比JSON,而且像redbmk說更快,它更好地處理UTF-8。

+0

來自'JSON'文檔:*此模塊默認嘗試使用'JSON :: XS',並失敗,請使用'JSON :: PP'代替。所以它的功能完全依賴於'JSON :: XS'或'JSON :: PP'。* – 2013-03-20 04:25:27