2012-10-24 3 views
-1

일반 텍스트가 포함 된 큰 텍스트 파일을 가지고 있습니다.하지만 그 안에는 base64로 인코딩 된 텍스트 블록이있는 섹션이 있습니다. 이 파서를 읽을 수 있도록이 텍스트를 디코드해야합니다. 내 스크립트 내에서 base64 디코더를 사용하여 시도했지만 base64 텍스트를 둘러싼 일반 텍스트가있을 때 작동하지 않습니다. 누구든지 내가 어떻게 이러한 섹션을 추출하고 디코딩 할 수있는 아이디어를 가지고 있습니까? 텍스트 파일은 길며 이러한 base64 세그먼트가 여러 개 있습니다. 블록 주위의 유일한 일치 항목은 "X-Attachement-ID : xxx", 빈 줄, 블록 및 줄 뒤에있는 "--xxx--"입니다.기본 텍스트 파일 내에서 기본 64 디코딩

저는 Perl 스크립트를 사용하여 .txt 파일을 구문 분석하고 읽습니다.

텍스트 파일의 예를 아래에 게시했습니다.

Content-Type: text/xml; charset=US-ASCII; name="1415160277.xml" 
Content-Disposition: attachment; filename="1415160277.xml" 
Content-Transfer-Encoding: base64 
X-Attachment-Id: f_h8oq2dh20 

PD94bWwgdmVyc2lvbj0iMS4wImVuY29kaW5nPSJVVEYtOCI/Pg0KPEluZnJpbmdlbWVudCB4c2k6 
c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudGVzdC5jb20vQUNOUyBodHRwOi8vd3d3LnRlc3Qu 
Y29tIiB4bWxucz0iaHR0cDovL3d3dy50ZXN0LmNvbS9BQ05TIiB4bWxuczp4c2k9Imh0dHA6Ly93 
d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48Q2FzZT48SUQ+MTQxNTE2MDI3Nzwv 
SUQ+PFN0YXR1cz5PcGVuPC9TdGF0dXM+PFNldmVyaXR5Pk5vcm1hbDwvU2V2ZXJpdHk+PC9DYXNl 
PjxDb21wbGFpbmFudD48RW50aXR5PnRlc3Q8L0VudGl0eT48Q29udGFjdD50ZXN0IENvcHlyaWdo 
dCBJbmZyaW5nZW1lbnQ8L0NvbnRhY3Q+PEFkZHJlc3M+PC9BZGRyZXNzPjxQaG9uZT48L1Bob25l 
PjxFbWFpbD50ZXN0QHRlc3QuY29tPC9FbWFpbD48L0NvbXBsYWluYW50PjxTZXJ2aWNlX1Byb3Zp 
ZGVyPjxFbnRpdHk+dGVzdDwvRW50aXR5PjxDb250YWN0PnRlc3Q8L0NvbnRhY3Q+PEFkZHJlc3M+ 
dGVzdA0KPC9BZGRyZXNzPjxQaG9uZT50ZXN0PC9QaG9uZT48RW1haWw+PC9FbWFpbD48L1NlcnZp 
Y2VfUHJvdmlkZXI+PFNvdXJjZT48VGltZVN0YW1wPnRlc3Q8L1RpbWVTdGFtcD48SVBfQWRkcmVz 
cz50ZXN0PC9JUF9BZGRyZXNzPjxUeXBlPkJpdFRvcnJlbnQ8L1R5cGU+PFVzZXJOYW1lPjwvVXNl 
ck5hbWU+PE51bWJlcl9GaWxlcz4xPC9OdW1iZXJfRmlsZXM+PC9Tb3VyY2U+PENvbnRlbnQ+PEl0 
ZW0+PFRpdGxlPnRlc3Q8L1RpdGxlPjxJbmZvSGFzaD50ZXN0PC9JbmZvSGFzaD48L0l0ZW0+PC9D 
b250ZW50PjxIaXN0b3J5Lz4 
--047d7b5d9603ea951104ccd17c87--', 
      \'MIME-Version: 1.0 
Received: by --- with HTTP; Wed, 24 Oct 2012 10:38:10 -0700 (PDT) 
Date: Wed, 24 Oct 2012 10:38:10 -0700 

base64로 블록의 디코딩은 다음과 같습니다

<?xml version="1.0"encoding="UTF-8"?> 
<Infringement xsi:schemaLocation="http://www.test.com/ACNS http://www.test.com"  xmlns="http://www.test.com/ACNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Case><ID>1415160277</ID><Status>Open</Status><Severity>Normal</Severity></Case><Complainant><Entity>test</Entity><Contact>test Copyright Infringement</Contact><Address></Address><Phone></Phone><Email>[email protected]</Email></Complainant><Service_Provider><Entity>test</Entity><Contact>test</Contact><Address>test 
</Address><Phone>test</Phone><Email></Email></Service_Provider><Source><TimeStamp>test</TimeStamp><IP_Address>test</IP_Address><Type>BitTorrent</Type><UserName></UserName><Number_Files>1</Number_Files></Source><Content><Item><Title>test</Title><InfoHash>test</InfoHash></Item></Content><History/><Notes/></Infringement> 

답변

4

난 당신이 전자 메일 메시지를 구문 분석 등 Email::MIME 같은 모듈을 사용하는 것이 좋습니다. 첨부 파일을 자동으로 구문 분석하고 디코딩합니다.

관련 문제