Perl은 매우 강력한 텍스트 데이터 처리 언어입니다.
Perl에서는 형식을 사용하여 템플릿을 정의한 다음 쓰기를 사용하여 지정된 템플릿에 따라 데이터를 출력할 수 있습니다.
Perl 형식 정의 구문은 다음과 같습니다.
형식 FormatName =fieldlinevalue_one, value_two, value_ threefieldlinevalue_one, value_two.
매개변수 분석:
FormatName : 형식화된 이름입니다.
fieldline : @,^,,|와 같은 문자를 사용하여 출력 줄의 형식을 정의하는 데 사용되는 형식 줄입니다.
value_one, value_two... : 이전 형식 행에 값을 삽입하는 데 사용되는 데이터 행은 모두 Perl 변수입니다.
. : 끝 기호.
다음은 간단한 형식 지정 예입니다.
위 예제를 실행한 결과는 다음과 같습니다.
첫 번째: google두 번째: coderctothird: taoba
형식 행은 @ 또는 ^로 시작하며 이 행에서는 변수 대체가 수행되지 않습니다.
@ 필드(배열 기호 @와 혼동하지 마십시오)는 일반 필드입니다.
@,^ 뒤의 <, >,| 길이에 따라 필드 길이가 결정됩니다. 변수가 정의된 길이를 초과하면 잘립니다.
<, >,|는 각각 왼쪽 정렬, 오른쪽 정렬, 가운데 정렬을 나타냅니다.
^ 필드는 여러 줄의 텍스트 블록 패딩에 사용됩니다.
값 범위의 형식은 다음 표와 같습니다.
체재 | 값 범위 의미 |
---|---|
@<<< | 왼쪽 정렬 출력 |
@>>> | 오른쪽 정렬 출력 |
@||| | 중앙 정렬 출력 |
@##.## | 고정 정밀도 숫자 |
@* | 여러 줄 문자 |
각 값 필드의 첫 번째 문자는 줄 채우기 문자입니다. @ 문자를 사용하면 텍스트 서식이 적용되지 않습니다.
위 표에서 여러 줄 값 필드 @*를 제외하고 필드 너비는 @ 문자를 포함하여 지정된 문자 수와 같습니다. 예:
@###.##
이는 7자(소수점 앞 4자, 소수점 이하 2자)를 의미합니다.
예는 다음과 같습니다:
위 예제의 출력 결과는 다음과 같습니다.
==================================알리 20 2000.00============ ================================================= ========코데르토 30 2500.00=============================================== = =====================제퍼 40 4000.00========================== = =========
$~ ($FORMAT_NAME): 형식 이름 $^ ($FORMAT_TOP_NAME): 현재 헤더 형식 이름이 저장됩니다.
$% ($FORMAT_PAGE_NUMBER): 현재 출력 페이지 번호
$= ($FORMAT_LINES_PER_PAGE) : 각 페이지의 줄 수
$| ($FORMAT_AUTOFLUSH): 출력 버퍼 저장소를 자동으로 새로 고칠지 여부
$^L ($FORMAT_FORMFEED): 각 페이지(첫 번째 페이지 제외)의 헤더가 저장되기 전에 출력해야 하는 문자열입니다.
다음은 $~를 사용한 간단한 형식 지정의 예입니다.
위 예제를 실행한 결과는 다음과 같습니다.
================================= 텍스트 # 코더 튜토리얼============ = ================================================= = === 텍스트 # 코더 튜토리얼==================================
$~를 지정하지 않으면 STDOUT이라는 형식이 출력됩니다.
위 예제를 실행한 결과는 다음과 같습니다.
----------------STDOUT 형식----------------
다음 예에서는 보고서 헤더 정보를 추가하여 $^ 또는 $FORMAT_TOP_NAME 변수의 사용을 보여줍니다.
위 예제의 출력 결과는 다음과 같습니다.
===================================이름 나이============= = ================================================ = =======알리 20 2000.00====================================== === ===============================Codercto 30 2500.00=============================================== = =====================제퍼 40 4000.00========================== = =========
$% 또는 $FORMAT_PAGE_NUMBER를 사용하여 보고서의 페이지 매김을 설정할 수도 있습니다.
위 예제의 출력 결과는 다음과 같습니다.
===================================이름 나이 페이지 1=========== = ================================================ = =========알리 20 2000.00==================================== === =================================Coderto 30 2500.00=============================================== = =====================제퍼 40 4000.00========================== = =========
기본적으로 쓰기 함수는 결과를 표준 출력 파일 STDOUT에 출력하지만 결과를 다른 파일에 출력하도록 만들 수도 있습니다. 가장 간단한 방법은 다음과 같이 파일 변수를 작성할 매개변수로 전달하는 것입니다.
쓰기(마이파일);
위의 코드는 MYFILE이라는 기본 인쇄 형식을 사용하여 MYFILE 파일에 출력을 씁니다.
그러나 $~ 변수를 사용하여 사용된 인쇄 형식을 변경할 수는 없습니다. 시스템 변수 $~는 기본 파일 변수에만 영향을 미칩니다. 기본 파일 변수를 변경하고 $~를 변경한 다음 쓰기를 호출할 수 있습니다.
성공적으로 실행되면 다음과 같이 tmp 파일의 내용을 볼 수 있습니다.
$ cat tmp ================================ 파일에 입력============ ======================
select를 사용하여 기본 파일 변수를 변경할 수 있으면 현재 기본 파일 변수의 내부 표현이 반환되므로 프로그램의 다른 부분에 영향을 주지 않고 자신의 아이디어에 따라 서브루틴과 출력을 만들 수 있습니다.
성공적으로 실행되면 다음과 같이 tmp 파일의 내용을 볼 수 있습니다.
$ cat tmp ================================ 파일에 입력============ ================================================= = ===== 정의된 형식을 사용하여 파일에 입력 ====================================