2012-09-03 1 views
3

아마도 AS/400에서 RPG IV와 같은 것으로 해석되는 파일을 작성해야합니다 (그러나 그 사실을 모릅니다). 이 파일은 MySQL 데이터베이스에서 데이터를 읽은 다음 지정된 형식으로 작성하여 만듭니다. 상당히 클 수 있습니다 (잠재적으로 GB로 측정되었지만 아직 결정되지 않았습니다). 지금은 펄 (Perl)이 format에 내장되어 있다고 생각합니다. 실제로 Xslate 및 Template Toolkit과 같은 것들이 너비 (HTML)가 고정되어 있지 않은 것들을 위해 설계 되었기 때문에 실제로 가장 좋은 방법이라고 생각합니다. 내 유일한 관심은 거기에 format은 조건부를 가지고 있지 않은 것처럼 보입니다. 필드 A가 설정된 경우, 왼쪽 정렬 된 형식, 오른쪽 맞춤 및 그렇지 않은 경우 패딩 된 형식을 찾았습니다.)고정 폭 필드 파일을 작성하는 좋은 방법은 무엇입니까?

+0

또 다른 가능성은 [Perl6 :: Form] (https://metacpan.org/module/Perl6::Form)입니다. Perl5는 Perl6의'format' 버전입니다. 나는 조건문에 대한 당신의 의견에 대해 확신하지 못하지만, 이것은 형식 이상입니다. – stevenl

답변

4

다른 가능성은 마음에 packsprintf 기능 제품군입니다.

pack은 오른쪽 맞춤 텍스트를 지원하지 않으므로 옵션이 될 수 없습니다.

그게 printf를 남깁니다. 양쪽 정렬을 위해 조건부 논리를 지원하기 위해 프로그래밍 방식으로 형식 지정자를 작성할 수 있습니다.

+0

필자는'pack'과'sprintf'의 조합을 사용할 때만 후자를 사용했습니다. – xenoterracide

0

Template Toolkit은 고정 너비 형식의 파일을 만들 때 서비스 가능한 작업을 수행 할 수 있습니다. 트릭은 템플릿을 사용하여 파일 및 레코드 구조를 설명하지만 Perl 함수 형식으로 각 필드의 데이터 형식을 지정하는 것입니다.

템플릿을 건너 뛰고 Perl에서 모든 서식을 지정하는 것이 더 쉽습니다. 어떤 방법 으로든 필드의 서식을 지정하는 방법을 고려해야합니다. 내 경험에 의하면 sprintf이 더 좋으며 고정 폭 형식의 파일에 필요한 서식 지정 사례를 더 많이 처리합니다. 아마 당신의 불행이 있다면 EBCDIC/COBOL 부호있는 숫자를 ASCII로 인코딩 한 것과 같은 몇 가지 도우미 기능을 구현해야 할 것입니다.

레거시 고정 폭 형식의 파일에는 수천 건의 특수한 경우가 있습니다. XML 데이터 파일을 만들 정도로 충분합니다. 일반적으로 파일 형식을 지정하는 가장 좋은 방법이 무엇인지 결정하는 것이 가장 이상한 특수한 경우입니다.

관련 문제