Latest web development tutorials

output diformat perl

Perl adalah data bahasa pengolahan teks sangat kuat.

Perl dapat digunakan untuk menentukan format template yang, dan kemudian menggunakan output menulis data dengan template yang ditetapkan.

Format perl didefinisikan sintaks adalah sebagai berikut:

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

parameter analisis:

  • FormatName: format nama.
  • fieldline: format baris, format yang digunakan untuk menentukan output line, mirip dengan @ the, ^, <,>, | karakter tersebut.
  • value_one, value_two ......: baris data, digunakan untuk memasukkan nilai-nilai ke format barisan depan, semua variabel perl.
  • : Simbol End.

Berikut ini adalah contoh sederhana diformat:

#!/usr/bin/perl

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

Lakukan contoh di atas output:

first: google
second: w3big
third: taoba

Format baris (baris grafis) sintaks

  • Format garis @ atau ^ di awal, garis-garis ini tidak mengalami bentuk substitusi variabel.
  • @ Lapangan (tidak harus bingung dengan array penanda @) adalah bidang biasa.
  • @, <,>, ^ Setelah | panjang menentukan panjang lapangan jika variabel melebihi panjang yang ditentukan, maka akan dipotong.
  • <,>, | Juga mewakili, kiri-blok, kanan-blok, pusat selaras.
  • ^ Fields untuk multi-line blok teks mengisi.

Format Rentang

Berbagai format, sebagai berikut:

format Arti kisaran
@ <<< Output meninggalkan
@ >>> Benar-dibenarkan keluaran
@ ||| menyelaraskan keluaran
@ ##. ## nomor presisi tetap
@ * Beberapa baris teks

Karakter pertama dari setiap baris adalah berbagai karakter filler bila menggunakan karakter @, bukan format teks.

Pada tabel di atas, selain untuk multi-line @ * jangkauan, lebar lapangan adalah sama dengan jumlah tertentu karakter dalam karakter @, termasuk, misalnya:

@###.##

Ini merupakan tujuh karakter lebar, setelah empat sebelum titik desimal, titik desimal dua.

Contohnya adalah sebagai berikut:

#!/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;
}

Contoh di atas output:

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

Format variabel

  • $ ~ ($ FORMAT_NAME): Format Nama $ ^ ($ FORMAT_TOP_NAME): Nama format saat disimpan dalam header
  • $% ($ FORMAT_PAGE_NUMBER): saat nomor halaman keluaran
  • $ = ($ FORMAT_LINES_PER_PAGE): jumlah baris pada halaman
  • $ | ($ FORMAT_AUTOFLUSH): apakah akan secara otomatis menyiram output memori penyangga
  • $ ^ L ($ FORMAT_FORMFEED): pada setiap halaman (kecuali halaman pertama) sundulan diperlukan sebelum output string disimpan dalam

Berikut ini adalah sederhana untuk menggunakan $ misalnya - Format:

#!/usr/bin/perl

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

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

Lakukan contoh di atas output:

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

Jika Anda tidak menentukan $ ~ bawah kasus ini, format output disebut STDOUT:

#!/usr/bin/perl

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

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

Lakukan contoh di atas output:

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

mengikuti contoh kita menambahkan informasi laporan kepala untuk menunjukkan $ ^ atau $ FORMAT_TOP_NAME variabel:

#!/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;
}

Contoh di atas output:

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

Kita juga bisa menggunakan $% atau $ FORMAT_PAGE_NUMBER set pagination untuk laporan:

#!/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;
}

Contoh di atas output:

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

Output ke file lain

Secara default, fungsi akan menulis hasil dengan standar STDOUT file output, kami juga dapat membuat menampilkan hasilnya ke file lain. Cara termudah adalah dengan mengajukan variabel sebagai parameter untuk menulis, seperti:

write(MYFILE);

Menulis kode di atas menggunakan format output cetak default untuk file bernama MYFILE MYFILE di.

Tapi ini tidak dapat digunakan untuk mengubah format cetak yang digunakan oleh variabel $ ~. variabel sistem $ ~ variabel bekerja hanya untuk file default, kita bisa mengubah file default variabel $ ~ perubahan, kemudian memanggil menulis.

#!/usr/bin/perl

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

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

Setelah keberhasilan pelaksanaan, kita dapat melihat isi dari file tmp, sebagai berikut:

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

Kita dapat menggunakan pilih untuk mengubah variabel file default, yang mengembalikan variabel internal saat ini menunjukkan file default, sehingga kita dapat membuat subprogram, menurut output ide mereka sendiri, tanpa mempengaruhi sisa program.

#!/usr/bin/perl

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

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

Setelah keberhasilan pelaksanaan, kita dapat melihat isi dari file tmp, sebagai berikut:

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