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

تنسيق الصف (الصف رسومي) في بناء الجملة

  • خطوط شكل @ أو ^ في البداية، هذه السطور لا تخضع لأي شكل من أشكال استبدال متغير.
  • @ الميدان (وينبغي عدم الخلط بينه وبين مجموعة علامة @) هو حقل العاديين.
  • @، <،>، ^ بعد | يحدد طول طول الحقل إذا تجاوز متغير طول محددة، سيتم اقتطاع ذلك.
  • <،>، | تمثل أيضا، محاذاة إلى اليمين، محاذاة مركز محاذاة إلى اليسار.
  • ^ الحقول لمتعدد الخطوط كتلة نص الملء.

مجموعة تنسيق

مجموعة من الأشكال، على النحو التالي:

شكل معنى النطاق
@ <<< الناتج اليسار
@ >>> الناتج بزر الماوس الأيمن مبرر
@ ||| محاذاة الانتاج
@ ##. ## عدد الدقة ثابت
@ * عدة أسطر من النص

الحرف الأول من كل سطر هو مجموعة من الطابع حشو عند استخدام @ حرف، لا تنسيق النص.

في الجدول أعلاه، بالإضافة إلى عدة الخط @ * مجموعة، واسعة المجال هي مساوية لعدد محدد من الأحرف في الحرف @، بما في ذلك، على سبيل المثال:

@###.##

وهو يمثل سبعة أحرف واسعة، بعد أربعة قبل العلامة العشرية، وهذه النقطة العشرية اثنين.

ومن الأمثلة على ذلك ما يلي:

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

بعد التنفيذ الناجح، ونحن يمكن عرض محتويات ملف تمة، على النحو التالي:

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

يمكننا استخدام حدد لتغيير المتغير الملف الافتراضي، والتي ترجع المتغير الداخلي الحالي يشير إلى الملف الافتراضي، حتى نتمكن من إنشاء برنامج فرعي، وفقا لإخراج الأفكار الخاصة بهم، دون أن يؤثر ذلك على بقية البرنامج.

#!/usr/bin/perl

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

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

بعد التنفيذ الناجح، ونحن يمكن عرض محتويات ملف تمة، على النحو التالي:

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