2016-04-22 147 views
-5

我有一個JSON正文的http帖子必須被分成80個字符的雙引號字符串 - 但 - 每當我使用解壓縮來讀取前80個字符時,源字符串中的字符串指針(不是CR/LF在每行的末尾分隔)不會改變 - 例如下面的循環會一直重複讀取相同的字符串 - 我假設解包期望CR/LF是預先存在的?如果不是,我該怎麼辦?如何使用Perl的解壓縮?

@row =unpack 'A80', $body; 
foreach $line (@body) 
{ 
    @row =unpack 'A80', $body; 
    print '"'.$line.'"' ; 
} 
+0

哪裏是'@ body'來自哪裏?您需要提供一個鏈接作爲示例輸入,以及實際運行的代碼,以便我們可以進行測試。你有'嚴格使用'和'使用警告'嗎?'啓用? – stevieb

+0

這是真的不清楚你想要做什麼。無論如何,沒有與「解包」相關的「字符串指針」。 (也許你正在考慮'pos',它只用於正則表達式。) – cjm

+0

如果你想解析JSON,你應該使用[適當的JSON解析器](https://metacpan.org/pod/ JSON)。如果這不是你想要做的,你應該編輯你的問題來澄清,現在還不清楚。 – ThisSuitIsBlackNot

回答

-2

以下是我解決了這個問題:

my $n = 80; # $n is group size. 
my @groups = unpack "a$n" x (length($body) /$n), $body; 

# print @groups; 
foreach $line (@groups) { 
    print '"'.$line.'"' ; 
} 
+1

這不是你的問題的答案 – Borodin

1

這真的很難理解你的情況,而是從自己的「答案」看起來你需要這個

my @groups = unpack '(a80)*', $body; 

從您的問題看起來好像可能會更好

my @groups = unpack '(A80)*', $body; 

但你真的需要描述哪裏$body來自何方,什麼結果,你希望