Latest web development tutorials

펄 형식의 출력

펄 매우 강력한 텍스트 처리 언어의 데이터이다.

펄 서식 포맷을 정의하고, 지정된 템플릿에 의해 기록 데이터의 출력을 이용하기 위해 사용될 수있다.

다음과 같이 펄 형식 정의 구문은 다음과 같습니다

format FormatName =
fieldline
value_one, value_two, value_three
fieldline
value_one, value_two
.

분석 매개 변수 :

  • FORMATNAME : 형식 이름입니다.
  • fieldline : 로우 포맷은 @ 유사한 출력 라인을 정의하는 데 사용되는 포맷 ^ <,>, | 같은 캐릭터.
  • value_one, value_two ... : 앞줄 형식으로 값을 삽입하는 데 사용되는 데이터의 행, 모든 펄 변수.
  • : 최종 기호입니다.

다음은 간단한 예는 형식이됩니다

#!/usr/bin/perl

$text = "google w3big taobao";
format STDOUT =
first: ^<<<<<  # 左边对齐,字符长度为6
    $text
second: ^<<<<< # 左边对齐,字符长度为6
    $text
third: ^<<<< # 左边对齐,字符长度为5,taobao 最后一个 o 被截断
    $text  
.
write

위의 예제 출력이 수행

first: google
second: w3big
third: taoba

형식 행 (행 그래픽) 구문

  • 형식 라인 @ 또는 ^ 처음에,이 라인은 변수 대체 어떤 형태를 받아야하지 않습니다.
  • @ 필드 (배열 마커 @와 혼동하지 말 것) 통상의 필드이다.
  • @ <,>, 애프터 ^ | 변수가 정의 된 길이를 초과하는 경우, 길이 필드의 길이를 결정하고,이 절단된다.
  • <,>, | 또한 대표, 왼쪽 정렬 가운데 정렬, 오른쪽 정렬.
  • ^ 멀티 라인 텍스트 블록 작성을위한 필드.

형식 범위

형식의 범위를 다음과 같이

체재 범위의 의미
@ <<< 왼쪽 출력
@ >>> 오른쪽 정렬 출력
@ ||| 출력을 맞 춥니 다
@ ##. ## 고정 정밀도 수
@ * 여러 줄의 텍스트

@ 문자가 아닌 텍스트 서식을 사용하는 경우 각 행의 첫 번째 문자는 필러 캐릭터의 범위입니다.

위의 표에서, 부가 @ *의 범위, 넓은 필드 라인 멀티 예 포함한 @ 문자의 문자의 소정 개수와 동일하다 :

@###.##

그것은, 7 자 넓은 나타냅니다 사 후 소수점 전에, 소수점이.

다음 예는 다음과 같다 :

#!/usr/bin/perl

format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<< 
$name $age
@#####.##
$salary
===================================
.

select(STDOUT);
$~ = EMPLOYEE;

@n = ("Ali", "w3big", "Jaffer");
@a  = (20,30, 40);
@s = (2000.00, 2500.00, 4000.000);

$i = 0;
foreach (@n){
	$name = $_;
	$age = $a[$i];
	$salary = $s[$i++];
	write;
}

위 예제의 출력은 다음과 같습니다

===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

변수 형식

  • $ ~ ($의 FORMAT_NAME) : 형식 이름 $ ^ ($ FORMAT_TOP_NAME) : 현재 포맷 이름 헤더에 저장됩니다
  • $ %의 ($ FORMAT_PAGE_NUMBER) : 현재 출력 페이지 번호
  • $ = ($ FORMAT_LINES_PER_PAGE) 페이지 행수
  • $ | ($ FORMAT_AUTOFLUSH) : 자동으로 출력 버퍼 메모리를 플러시 여부
  • $ ^ L ($ FORMAT_FORMFEED) : 출력 문자열에 저장되기 전에 필요한 모든 페이지 (첫 페이지 제외) 헤더

다음은 $ 인스턴스를 사용하기 간단합니다 - 형식 :

#!/usr/bin/perl

$~ = "MYFORMAT"; # 指定缺省文件变量下所使用的格式
write;           # 输出 $~ 所指定的格式

format MYFORMAT = # 定义格式 MYFORMAT 
=================================
      Text # 本教程
=================================
.
write; 

위의 예제 출력이 수행

=================================
      Text # 本教程
=================================
=================================
      Text # 本教程
=================================

이 경우 아래에 $ ~을 지정하지 않으면, 출력 형식은 STDOUT라고 :

#!/usr/bin/perl

write;         # 不指定$~的情况下会寻找名为STDOUT的格式

format STDOUT =
~用~号指定的文字不会被输出
----------------
  STDOUT格式
----------------
.

위의 예제 출력이 수행

----------------
  STDOUT格式
----------------

우리가 보고서 헤더 정보를 추가 다음 예는 $ ^ 또는 $ FORMAT_TOP_NAME 변수를 설명합니다 :

#!/usr/bin/perl

format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<< 
$name $age
@#####.##
$salary
===================================
.

format EMPLOYEE_TOP =
===================================
Name                    Age
===================================
.

select(STDOUT);
$~ = EMPLOYEE;
$^ = EMPLOYEE_TOP;

@n = ("Ali", "w3big", "Jaffer");
@a  = (20,30, 40);
@s = (2000.00, 2500.00, 4000.000);

$i = 0;
foreach (@n){
   $name = $_;
   $age = $a[$i];
   $salary = $s[$i++];
   write;
}

위 예제의 출력은 다음과 같습니다

===================================
Name                    Age
===================================
===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

우리는 또한 보고서는 $ % 또는 $ FORMAT_PAGE_NUMBER 설정 페이지 매김을 사용할 수 있습니다 :

#!/usr/bin/perl

format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<< 
$name $age
@#####.##
$salary
===================================
.

# 添加分页 $% 
format EMPLOYEE_TOP =
===================================
Name                    Age Page @<
                                 $%
=================================== 
.

select(STDOUT);
$~ = EMPLOYEE;
$^ = EMPLOYEE_TOP;

@n = ("Ali", "w3big", "Jaffer");
@a  = (20,30, 40);
@s = (2000.00, 2500.00, 4000.000);

$i = 0;
foreach (@n){
   $name = $_;
   $age = $a[$i];
   $salary = $s[$i++];
   write;
}

위 예제의 출력은 다음과 같습니다

===================================
Name                    Age Page 1
===================================
===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

다른 파일로 출력

기본적으로, 기능은 표준 출력 파일 STDOUT에 결과를 기입한다, 우리는 또한 다른 파일로 출력 할 수있다. 가장 쉬운 방법은 매개 변수가 같은 쓰기로 변수 파일에 있습니다 :

write(MYFILE);

MYFILE MYFILE에서라는 파일에 기본 인쇄 형식의 출력을 사용하려면 위의 코드를 작성합니다.

그러나 이것은 $ ~ 변수로 사용 된 출력 형식을 변경할 수 없다. 시스템 변수가 ~ 변수는 기본 파일 작동 $, 우리가 ~ 변화를 기본 파일 변수 $을 변경할 수 있습니다, 다음 쓰기를 호출합니다.

#!/usr/bin/perl

if (open(MYFILE, ">tmp")) {
$~ = "MYFORMAT";
write MYFILE; # 含文件变量的输出,此时会打印与变量同名的格式,即MYFILE。$~里指定的值被忽略。

format MYFILE = # 与文件变量同名 
=================================
      输入到文件中
=================================
.
close MYFILE;
}

다음과 같이 성공적으로 구현 후, 우리는, tmp 파일의 내용을 볼 수 있습니다 :

$ cat tmp 
=================================
      输入到文件中
=================================

우리는 프로그램의 나머지 부분에 영향을주지 않고, 자신의 아이디어의 출력에 따라, 우리는 서브 프로그램을 만들 수 있도록, 현재의 내부 변수가 기본 파일을 나타내는 반환 기본 파일의 변수를 변경하도록 선택 사용할 수있다.

#!/usr/bin/perl

if (open(MYFILE, ">>tmp")) {
select (MYFILE); # 使得默认文件变量的打印输出到MYFILE中
$~ = "OTHER";
write;           # 默认文件变量,打印到select指定的文件中,必使用$~指定的格式 OTHER

format OTHER =
=================================
  使用定义的格式输入到文件中
=================================
. 
close MYFILE;
}

다음과 같이 성공적으로 구현 후, 우리는, tmp 파일의 내용을 볼 수 있습니다 :

$ cat tmp 
=================================
      输入到文件中
=================================
=================================
  使用定义的格式输入到文件中
=================================