2009-10-20 7 views
6

나는 Data::Dumper::Dumper() 방법을 사용하고 있습니다. 출력은 좋지만 컴팩트하고보기 좋게 만들 수 있습니다.Data :: Dumper의 출력 형식을 제어하려면 어떻게해야합니까?

어떻게 제어 할 수 있습니까? 더 나은 대안은 무엇입니까?

+3

:

use Data::Dumper::Concise; warn Dumper($var); 

은 동일합니다? – innaM

+3

Eanning Manni : 문서를 읽고 매개 변수를 조정하여 얻을 수있는 것보다 개선해야 할 사항이 무엇인지 알아야합니다. –

+1

생산을 위해이 도구를 사용하지 않기를 바란다면 그것이 내가 더 예쁘게 만들고 싶다는 것을 알 수있는 유일한 이유 일 것입니다. 그것은 데이터 구조를 보여줍니다. 예쁘다고 생각하지 않아요. –

답변

20

Data :: Dumper와 비슷한 것을 Data::Dump에서 살펴 보았지만 꽤 인쇄 할 때 더 좋을 것입니다.

편집 (20120304) : 나는이 질문을 완전히 잊어 버렸지 만, 오늘 upvoted되었고 그것은 내 기억을 조깅했다. Perl에서 예쁜 인쇄를 위해 오늘 (3 년 후) 무엇인가를 추천해야한다면, 확실히Data::Printer과 함께 할 것입니다. 데이터 : 프린터의 자신의 이론적 근거에서 :. 자료 : 덤퍼은 eval 인에 적합한 방식으로 데이터 구조를 캐릭터 라인 화하는 것을 의미 환상적인 도구입니다 '다시 에드

것은이

, 많은 사람들이 데이터 (예 : Data :: Dump와 비슷한 것들)를 계속 사용하여 검사 및 디버깅을 위해 화면에 데이터 구조와 객체를 인쇄합니다. 은 그러한 모듈을 사용하는 것을 의미하지는 않습니다. 이어야합니다. 데이터 : 프린터가 들어오는 곳

은이 한 가지와 단 한 가지 수행하기위한 것입니다 :. 화면에 디스플레이 펄 변수와 객체, 제대로 (인간에 의해 검사하는) 포맷

3

대체 * ~ Data::DumperJSON이고 Perl 구현은 JSON입니다. 더 나은 여부

* 결정하는 당신에게 달려 있습니다.

+3

자바 스크립트 또는 Flash 응용 프로그램에서 수신 할 데이터 구조 준비와 같은 크로스 플랫폼 또는 크로스 언어 통신의 경우 확실히 더 좋습니다. 대부분의 현대 언어에 대한 JSON 라이브러리와 많은 포스트 모던 및 낡은 라이브러리가 있습니다. :) – Ether

5

디스플레이 대신 저장을 위해 출력을 직렬화하려면 Storablefreeze()thaw()을보십시오. Data :: Dumper가 DB 나 캐시에 데이터 구조를 저장하는 데 사용될 때마다 나는 싫증이 난다. :(

4

나는 일반적으로 데이터 : 덤프 :: 트리머를 사용하지만 다른 사람들이 말했듯이, 데이터에 대한 옵션 : 덤퍼가 충분하지 않은 경우에만 사용할 수 있습니다.

2

을 그냥 덤프 출력을 찾고 있다면 :. Smart::Comments

당신에게 단지 use 그것을

use Smart::Commments; 

그리고 당신은, 세 해시 코멘트에있는 간단한 변수를 넣어 그래서 같은 :.

my $v = black_box_process(); 
### $v 

그리고 가능한 가장 예쁜 인쇄물로 출력합니다.

또한과 같이 더 복잡한 표현을 관리 할 수 ​​있습니다

### ($a && ($b^($c || $d))) : ($a && ($b^($c || $d))) 

하지만 당신은 "콜론 경로"를 위해 그것을 볼 수 있습니다.

### $My::Package::variable 

또는

### % 내 :: 포장 ::

내 경험에서 일한 적이 있습니다. 그것은 또한 당신이 문서를 읽으면 당신이 볼 수있는 다른 귀여운 트릭의 숫자를 수행

my %stash = %My::Package::; 
### %stash 

: 내가 그들을 다음 작업 할 경우이 같은 뭔가가 필요합니다.

2

하나의 옵션은 Data::Dumper::Perltidy을 사용하여 Data :: Dumper :: Dumper()에 대한 (다소간) 드롭 인 대체이지만 Perltidy를 사용하여 출력의 서식을 지정하는 것입니다.

2

Data::Dumper::Concise도 가능합니다. 정확히 당신이 데이터 :: 덤퍼의 출력에 대해 좋아하지 않는 무엇

use Data::Dumper; 
{ 
    local $Data::Dumper::Terse = 1; 
    local $Data::Dumper::Indent = 1; 
    local $Data::Dumper::Useqq = 1; 
    local $Data::Dumper::Deparse = 1; 
    local $Data::Dumper::Quotekeys = 0; 
    local $Data::Dumper::Sortkeys = 1; 
    warn Dumper($var); 
}