นี่คือคำสั่ง perlform ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
perlform - รูปแบบ Perl
DESCRIPTION
Perl มีกลไกที่จะช่วยคุณสร้างรายงานและแผนภูมิอย่างง่าย เพื่ออำนวยความสะดวกนี้
Perl ช่วยให้คุณเขียนโค้ดหน้าผลลัพธ์ได้ใกล้เคียงกับลักษณะที่ปรากฏเมื่อพิมพ์ มัน
สามารถติดตามสิ่งต่างๆ เช่น จำนวนบรรทัดบนเพจ เพจที่คุณอยู่ เมื่อไรถึง
พิมพ์ส่วนหัวของหน้า ฯลฯ คำหลักยืมมาจาก FORTRAN: รูปแบบ() ประกาศและ
เขียน() เพื่อดำเนินการ; ดูรายการของพวกเขาใน perlfunc โชคดีที่เลย์เอาต์มีมากขึ้น
อ่านง่าย เหมือนคำสั่งพิมพ์ของ BASIC คิดว่ามันเป็นของคนจน ไม่(1)
รูปแบบ เช่น แพ็คเกจและรูทีนย่อย ได้รับการประกาศแทนที่จะดำเนินการ ดังนั้นอาจ
เกิดขึ้นที่จุดใดก็ได้ในโปรแกรมของคุณ (โดยปกติควรเก็บไว้ทั้งหมดเข้าด้วยกัน)
พวกเขามีเนมสเปซของตัวเองนอกเหนือจาก "ประเภท" อื่น ๆ ทั้งหมดใน Perl หมายความว่า
หากคุณมีฟังก์ชั่นชื่อ "Foo" จะไม่เหมือนกับการมีรูปแบบชื่อ
"ฟู". อย่างไรก็ตาม ชื่อเริ่มต้นสำหรับรูปแบบที่เกี่ยวข้องกับการจัดการไฟล์ที่ระบุคือ
เช่นเดียวกับชื่อของ filehandle ดังนั้น รูปแบบเริ่มต้นสำหรับ STDOUT จึงมีชื่อว่า
"STDOUT" และรูปแบบเริ่มต้นสำหรับ filehandle TEMP ชื่อ "TEMP" พวกเขาเพียงแค่มอง
เหมือนกัน. พวกเขาไม่ได้
รูปแบบบันทึกผลลัพธ์มีการประกาศดังนี้:
รูปแบบ NAME =
แบบฟอร์ม
.
หากไม่ระบุชื่อ จะมีการกำหนดรูปแบบ "STDOUT" โสด "." ในคอลัมน์ 1 ใช้สำหรับ
ยุติรูปแบบ FORMLIST ประกอบด้วยลำดับของเส้น ซึ่งแต่ละเส้นอาจเป็นหนึ่งใน
สามประเภท:
1. ความคิดเห็นที่ระบุโดยใส่ '#' ในคอลัมน์แรก
2. บรรทัด "รูปภาพ" ที่ให้รูปแบบสำหรับบรรทัดเอาต์พุตหนึ่งบรรทัด
3. เส้นอาร์กิวเมนต์ที่ให้ค่าเพื่อเสียบเข้ากับบรรทัดรูปภาพก่อนหน้า
เส้นรูปภาพมีคำจำกัดความของฟิลด์เอาต์พุต ผสมกับข้อความตามตัวอักษร เหล่านี้
เส้นไม่ผ่านการแก้ไขตัวแปรใดๆ คำจำกัดความของฟิลด์ถูกสร้างขึ้น
จากชุดอักขระสำหรับเริ่มต้นและขยายฟิลด์ให้มีความกว้างที่ต้องการ นี่คือ
ชุดอักขระที่สมบูรณ์สำหรับคำจำกัดความของฟิลด์:
@เริ่มสนามปกติ
^ เริ่มสนามพิเศษ
< อักขระแผ่นสำหรับให้เหตุผลด้านซ้าย
| อักขระแผ่นสำหรับการจัดกึ่งกลาง
> อักขระแผ่นสำหรับเหตุผลที่ถูกต้อง
# อักขระแผ่นสำหรับช่องตัวเลขที่ถูกต้อง
0 แทน #: หมายเลขแผ่นที่มีศูนย์นำหน้า
. จุดทศนิยมในช่องตัวเลข
... สิ้นสุดฟิลด์ข้อความโดยแสดง "..." เป็นหลักฐานการตัดทอน
@* ฟิลด์ความกว้างของตัวแปรสำหรับค่าหลายบรรทัด
^* ฟิลด์ความกว้างตัวแปรสำหรับบรรทัดถัดไปของค่าหลายบรรทัด
~ ระงับบรรทัดโดยที่ทุกช่องว่างเปล่า
~~ ซ้ำแถวจนหมดทุกช่อง
แต่ละฟิลด์ในบรรทัดรูปภาพเริ่มต้นด้วย "@" (at) หรือ "^" (คาเร็ต) โดยระบุว่าอะไร
เราจะเรียกฟิลด์ "ปกติ" หรือ "พิเศษ" ตามลำดับ ทางเลือกของตัวละครแผ่น
กำหนดว่าฟิลด์เป็นข้อความหรือตัวเลข ตัวดำเนินการตัวหนอนไม่ได้เป็นส่วนหนึ่งของa
สนาม. ลองดูความเป็นไปได้ต่างๆ โดยละเอียด
ข้อความ สาขา
ความยาวของฟิลด์นั้นมาจากการขยายฟิลด์ด้วยหลาย "<", ">" หรือ
"|" อักขระเพื่อระบุฟิลด์ที่ไม่ใช่ตัวเลขโดยให้เหตุผลด้านซ้ายตามลำดับ
การให้เหตุผลที่ถูกต้องหรือการจัดกึ่งกลาง สำหรับฟิลด์ปกติ ค่า (สูงสุด
ขึ้นบรรทัดใหม่) ถูกถ่ายและพิมพ์ตามเหตุผลที่เลือกตัดทอนส่วนเกิน
ตัวอักษร หากคุณสิ้นสุดช่องข้อความด้วย "..." จุดสามจุดจะปรากฏขึ้นหาก
ค่าจะถูกตัดทอน ช่องข้อความพิเศษสามารถใช้ทำข้อความหลายบรรทัดพื้นฐานได้
บล็อกเติม; ดู "การใช้โหมดเติม" สำหรับรายละเอียด
ตัวอย่าง:
รูปแบบ STDOUT =
@<<<<<< @|||||| @>>>>>>
"ซ้าย", "กลาง", "ขวา"
.
Output:
ซ้าย กลาง ขวา
เป็นตัวเลข สาขา
การใช้ "#" เป็นอักขระการขยายเพื่อระบุฟิลด์ตัวเลข โดยให้เหตุผลที่ถูกต้อง หนึ่ง
ไม่จำเป็น "." กำหนดตำแหน่งของจุดทศนิยม ด้วย "0" (ศูนย์) แทนที่จะเป็น
อันดับแรก "#" หมายเลขที่จัดรูปแบบจะถูกเติมด้วยศูนย์นำหน้าหากจำเป็น NS
ช่องตัวเลขพิเศษจะเว้นว่างไว้หากไม่มีการกำหนดค่า ถ้าค่าผลลัพธ์
จะเกินความกว้างที่ระบุฟิลด์ที่มี "#" เป็นหลักฐานล้น
ตัวอย่าง:
รูปแบบ STDOUT =
-
42, 3.1415, ไม่ระบุ, 0, 10000, ไม่ป้องกัน
.
Output:
42 3.142 0.000 0 ####
เทศกาล สนาม @* เป็นเวลา ตัวแปร-ความกว้าง หลายบรรทัด ข้อความ
ฟิลด์ "@*" สามารถใช้สำหรับการพิมพ์ค่าหลายบรรทัดและไม่ตัดทอน มันควรจะ (แต่
ไม่จำเป็น) ปรากฏขึ้นเองในบรรทัด ฟีดบรรทัดสุดท้ายถูกตัดออก แต่อื่นๆ ทั้งหมด
ตัวอักษรจะถูกปล่อยออกมาทุกคำ
เทศกาล สนาม ^* เป็นเวลา ตัวแปร-ความกว้าง หนึ่งบรรทัดต่อครั้ง ข้อความ
เช่นเดียวกับ "@*" นี่คือฟิลด์ความกว้างตัวแปร ค่าที่ระบุต้องเป็นตัวแปรสเกลาร์
Perl ใส่บรรทัดแรก (ถึง "\n") แรกของข้อความลงในฟิลด์ แล้วสับ
ปิดด้านหน้าของสตริงเพื่อให้การอ้างอิงตัวแปรในครั้งต่อไป
สามารถพิมพ์ข้อความได้ ตัวแปร will ไม่ ได้รับการบูรณะ
ตัวอย่าง:
$text = "บรรทัดที่ 1\nบรรทัดที่ 2\nบรรทัดที่ 3";
รูปแบบ STDOUT =
ข้อความ: ^*
ข้อความ $
~~ ^^*
ข้อความ $
.
Output:
ข้อความ: บรรทัด 1
บรรทัด 2
บรรทัด 3
ระบุ ความคุ้มค่า
ค่าที่ระบุไว้ในบรรทัดรูปแบบต่อไปนี้ในลำดับเดียวกับรูปภาพ
ฟิลด์ นิพจน์ที่ระบุค่าต้องคั่นด้วยเครื่องหมายจุลภาค พวกเขาทั้งหมด
ประเมินในบริบทของรายการก่อนที่จะประมวลผลบรรทัดดังนั้นนิพจน์รายการเดียว
สามารถสร้างองค์ประกอบรายการได้หลายรายการ นิพจน์อาจกระจายออกไปได้มากกว่าหนึ่ง
เส้นถ้าอยู่ในวงเล็บปีกกา ถ้าใช่ วงเล็บปีกกาเปิดต้องเป็นโทเค็นตัวแรกในตัวแรก
ไลน์. ถ้านิพจน์ประเมินเป็นตัวเลขที่มีส่วนทศนิยม และถ้า
รูปภาพที่เกี่ยวข้องระบุว่าส่วนทศนิยมควรปรากฏในผลลัพธ์ ( that
คือ รูปภาพใดๆ ยกเว้นอักขระ "#" หลายตัว ไม่มี ตัว "."), อักขระ
ใช้สำหรับจุดทศนิยมถูกกำหนดโดยสถานที่ LC_NUMERIC ปัจจุบันหาก "ใช้สถานที่"
มีผลบังคับใช้ ซึ่งหมายความว่า ตัวอย่างเช่น หากสภาพแวดล้อมรันไทม์เกิดขึ้นกับ
ระบุสถานที่เยอรมัน "," จะใช้แทนค่าเริ่มต้น "." ดู perllocale และ
"คำเตือน" สำหรับข้อมูลเพิ่มเติม
การใช้ ใส่ โหมด
ในฟิลด์ข้อความ เครื่องหมายรูปหมวกจะเปิดใช้งานโหมดการเติม แทนการแสดงออกโดยพลการ
ค่าที่ระบุต้องเป็นตัวแปรสเกลาร์ที่มีสตริงข้อความ Perl ทำให้
ส่วนถัดไปของข้อความลงในฟิลด์แล้วตัดด้านหน้าของสตริงดังนั้น
ว่าในครั้งต่อไปที่มีการอ้างอิงตัวแปร สามารถพิมพ์ข้อความได้มากขึ้น (ใช่,
นี่หมายความว่าตัวแปรเองถูกเปลี่ยนแปลงระหว่างการดำเนินการของ เขียน() โทรและ
ไม่ถูกกู้คืน) ส่วนถัดไปของข้อความถูกกำหนดโดยการแบ่งบรรทัดคร่าวๆ
อัลกอริทึม คุณสามารถใช้อักขระขึ้นบรรทัดใหม่ ("\r") เพื่อบังคับให้ขึ้นบรรทัดใหม่ได้ คุณสามารถ
เปลี่ยนอักขระที่ถูกกฎหมายที่จะทำลายโดยการเปลี่ยนตัวแปร $: (นั่นคือ
$FORMAT_LINE_BREAK_CHARACTERS หากคุณใช้โมดูลภาษาอังกฤษ) ในรายการที่ต้องการ
อักขระ
โดยปกติ คุณจะใช้ลำดับของฟิลด์ในสแต็กแนวตั้งที่เกี่ยวข้องกับฟิลด์เดียวกัน
ตัวแปรสเกลาร์เพื่อพิมพ์กลุ่มข้อความ คุณอาจต้องการสิ้นสุดฟิลด์สุดท้ายด้วย
ข้อความ "..." ซึ่งจะปรากฏในผลลัพธ์หากข้อความยาวเกินไปที่จะปรากฏใน
ครบถ้วน
ปราบปราม . ที่ไหน ทั้งหมด สาขา Are เป็นโมฆะ
การใช้ฟิลด์คาเร็ตสามารถสร้างบรรทัดที่ฟิลด์ทั้งหมดว่างเปล่าได้ คุณสามารถปราบปรามเช่น
โดยใส่อักขระ "~" (ตัวหนอน) ที่ใดก็ได้ในบรรทัด ตัวหนอนจะเป็น
แปลเป็นช่องว่างเมื่อส่งออก
การทำซ้ำ รูปแบบ .
หากคุณใส่อักขระตัวหนอน "~~" ติดกันสองตัวที่ใดก็ได้ในบรรทัด บรรทัดจะเป็น
ซ้ำจนกว่าฟิลด์ทั้งหมดในบรรทัดจะหมด นั่นคือ ไม่ได้กำหนด เพื่อความพิเศษ
(คาเร็ต) ฟิลด์ข้อความนี้จะเกิดขึ้นไม่ช้าก็เร็ว แต่ถ้าคุณใช้ฟิลด์ข้อความของ at
วาไรตี้ การแสดงออกที่คุณให้มาไม่ควรให้ค่าเท่ากันทุกครั้งตลอดไป!
("shift(@f)" เป็นตัวอย่างง่ายๆ ที่จะได้ผล) อย่าใช้ฟิลด์ตัวเลข (at) ปกติ
ในบรรทัดดังกล่าวเพราะจะไม่เว้นว่างไว้
Top of ฟอร์ม กระบวนการผลิต
การประมวลผลด้านบนของแบบฟอร์มจะถูกจัดการโดยค่าเริ่มต้นโดยรูปแบบที่มีชื่อเดียวกันกับcurrent
filehandle ที่มี "_TOP" ต่อกัน มันถูกเรียกใช้ที่ด้านบนสุดของแต่ละหน้า ดู
"เขียน" ใน perlfunc.
ตัวอย่าง:
#รายงานเรื่อง / etc / passwd ไฟล์
รูปแบบ STDOUT_TOP =
ไฟล์รหัสผ่าน
ชื่อ เข้าสู่ระบบ Office Uid Gid Home
-------------------------------------------------- ----------------
.
รูปแบบ STDOUT =
@<<<<<<<<<<<<<<<<<< @||||||| @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<<
$name, $เข้าสู่ระบบ, $office,$uid,$gid, $home
.
#รายงานจากแบบฟอร์มแจ้งบัค
รูปแบบ STDOUT_TOP =
รายงานข้อผิดพลาด
@<<<<<<<<<<<<<<<<<<<<<< @||| @>>>>>>>>>>>>>>>>>>>>>>>>
$ระบบ, $%, $วันที่
-------------------------------------------------- ----------------
.
รูปแบบ STDOUT =
Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<
$ subject
ดัชนี: @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<< <<<<<<<<<
$ดัชนี, $คำอธิบาย
ลำดับความสำคัญ: @<<<<<<<<<< วันที่: @<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<< <
$ลำดับความสำคัญ, $วันที่, $คำอธิบาย
จาก: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<< <<<<<<<<<<<<
$จาก $description
มอบหมายให้: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<< <<<<
$โปรแกรมเมอร์, $description
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<
คำอธิบาย $
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<
คำอธิบาย $
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<
คำอธิบาย $
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<
คำอธิบาย $
~ ^<<<<<<<<<<<<<<<<<<<<<<<<...
คำอธิบาย $
.
ผสมกันได้ พิมพ์()กับ เขียน()อยู่ในช่องสัญญาณออกเดียวกัน แต่คุณจะ
ต้องจัดการ "$-" ($FORMAT_LINES_LEFT) ด้วยตัวคุณเอง
รูปแบบ ตัวแปร
ชื่อรูปแบบปัจจุบันถูกเก็บไว้ในตัวแปร $~ ($FORMAT_NAME) และตัวบนสุด
ของชื่อรูปแบบในรูปแบบ $^ ($FORMAT_TOP_NAME) หมายเลขหน้าผลลัพธ์ปัจจุบันจะถูกเก็บไว้
ใน $% ($FORMAT_PAGE_NUMBER) และจำนวนบรรทัดบนหน้าอยู่ใน $=
($FORMAT_LINES_PER_PAGE) ว่าจะล้างเอาต์พุตอัตโนมัติบนแฮนเดิลนี้หรือไม่ถูกเก็บไว้ใน $|
($OUTPUT_AUTOFLUSH). เอาต์พุตสตริงก่อนด้านบนของหน้าแต่ละหน้า (ยกเว้นหน้าแรก) is
เก็บไว้ใน $^L ($FORMAT_FORMFEED) ตัวแปรเหล่านี้ถูกตั้งค่าตามการจัดการไฟล์ต่อไฟล์ ดังนั้น
คุณจะต้อง เลือก() ไปเป็นอย่างอื่นเพื่อส่งผลต่อพวกเขา:
เลือก ((เลือก (OUTF),
$~ = "My_Other_Format",
$^ = "My_Top_Format"
)[0]);
น่าเกลียดมากใช่มั้ย มันเป็นสำนวนทั่วไป ดังนั้นอย่าแปลกใจมากเมื่อคุณเห็นมัน
อย่างน้อยคุณสามารถใช้ตัวแปรชั่วคราวเพื่อเก็บ filehandle ก่อนหน้า: (นี่คือมาก
แนวทางที่ดีขึ้นโดยทั่วไป เพราะไม่เพียงแต่ความชัดเจนจะดีขึ้น ตอนนี้คุณยังมี
ระยะตัวกลางในนิพจน์เพื่อขั้นตอนเดียวในการดีบักเกอร์ผ่าน):
$ofh = เลือก (OUTF);
$~ = "My_Other_Format";
$^ = "My_Top_Format";
เลือก($ofh);
หากคุณใช้โมดูลภาษาอังกฤษ คุณสามารถอ่านชื่อตัวแปรได้:
ใช้ภาษาอังกฤษ
$ofh = เลือก (OUTF);
$FORMAT_NAME = "My_Other_Format";
$FORMAT_TOP_NAME = "My_Top_Format";
เลือก($ofh);
แต่คุณยังมีเรื่องตลกเหล่านั้นอยู่ เลือก()NS. ดังนั้นเพียงแค่ใช้โมดูล FileHandle ตอนนี้คุณ
สามารถเข้าถึงตัวแปรพิเศษเหล่านี้ได้โดยใช้ชื่อเมธอดตัวพิมพ์เล็กแทน:
ใช้ FileHandle;
format_name OUTF "My_Other_Format";
format_top_name OUTF "My_Top_Format";
ดีกว่ามาก!
หมายเหตุ
เนื่องจากบรรทัดค่าอาจมีนิพจน์โดยพลการ (สำหรับฟิลด์ ไม่ใช่คาเร็ต
ฟิลด์) คุณสามารถฟาร์มการประมวลผลที่ซับซ้อนมากขึ้นไปยังฟังก์ชันอื่น ๆ เช่น วิ่ง()
หรืออย่างใดอย่างหนึ่งของคุณเอง ตัวอย่างเช่น:
รหัสรูปแบบ =
@<<<<<<<<<<<<<<<<
&commify($n)
.
เพื่อให้ได้ตัวจริงหรือคาเร็ตในสนาม ให้ทำดังนี้
รหัสรูปแบบ =
ฉันมี @ ที่นี่
"@"
.
หากต้องการจัดข้อความทั้งบรรทัดให้อยู่ตรงกลาง ให้ทำดังนี้:
รหัสรูปแบบ =
@|||||||||||||||||||||||||||||||||||||||||||||||||||
"ข้อความบางบรรทัด"
.
ไม่มีทางที่จะบอกว่า "ลอยสิ่งนี้ไปทางด้านขวามือของหน้าอย่างไรก็ตาม
กว้างนัก" ต้องระบุให้ได้ว่าจะไปที่ไหน หมดหวังจริงๆ สร้างได้
รูปแบบของตัวเองได้ทันที ตามจำนวนคอลัมน์ปัจจุบัน จากนั้น ประเมิน () มัน
$format = "รูปแบบ STDOUT = \n"
. '^' . '<' x $cols "\NS"
. '$ รายการ' . "\NS"
. "\t^" "<" x ($cols-8) "~~\n"
. '$ รายการ' . "\NS"
. ".\NS";
พิมพ์รูปแบบ $ ถ้า $ Debugging;
รูปแบบ $ eval;
ตาย $@ ถ้า $@;
ซึ่งจะสร้างรูปแบบที่มีลักษณะดังนี้:
รูปแบบ STDOUT =
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<
$ รายการ
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <~~
$ รายการ
.
นี่เป็นโปรแกรมเล็กๆ ที่คล้ายๆ กัน เอฟเอ็มที(1):
รูปแบบ =
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
$_
.
$/ = '';
ในขณะที่ (<>) {
s/\s*\n\s*/ /g;
เขียน;
}
ท้ายกระดาษ
แม้ว่า $FORMAT_TOP_NAME จะมีชื่อของรูปแบบส่วนหัวปัจจุบัน แต่ไม่มี
กลไกที่สอดคล้องกันเพื่อทำสิ่งเดียวกันโดยอัตโนมัติสำหรับส่วนท้าย ไม่รู้เป็นเช่นไร
รูปแบบขนาดใหญ่จะเป็นไปจนกว่าคุณจะประเมินว่าเป็นหนึ่งในปัญหาสำคัญ มันออน
รายการสิ่งที่ต้องทำ
นี่คือกลยุทธ์หนึ่ง: หากคุณมีส่วนท้ายที่มีขนาดคงที่ คุณสามารถรับส่วนท้ายได้โดยทำเครื่องหมายที่
$FORMAT_LINES_LEFT ก่อนแต่ละรายการ เขียน() และพิมพ์ส่วนท้ายด้วยตนเองหากจำเป็น
นี่เป็นอีกกลยุทธ์หนึ่ง: เปิดไพพ์ให้กับตัวเองโดยใช้ "open(MYSELF, "|-")" (ดู "open"
ใน perlfunc) และเสมอ เขียน() ไปที่ MYSELF แทน STDOUT ให้ลูกของคุณดำเนินการ
นวด STDIN เพื่อจัดเรียงส่วนหัวและส่วนท้ายใหม่ตามที่คุณต้องการ ไม่สะดวกมาก,
แต่ทำได้
การเข้าถึง การจัดรูปแบบ internals
สำหรับการเข้าถึงกลไกการจัดรูปแบบระดับต่ำ คุณสามารถใช้ แบบฟอร์ม () และเข้าถึง $^A
(ตัวแปร $ACCUMULATOR) โดยตรง
ตัวอย่างเช่น:
$str = ฟอร์มไลน์ <<'END', 1,2,3;
@<<< @||| @>>>
END
พิมพ์ "ว้าว ฉันเพิ่งเก็บ '$^A' ไว้ในตัวสะสม!\n";
หรือจะทำ เขียน () รูทีนย่อยซึ่งก็คือเพื่อ เขียน() อะไร วิ่ง() คือการ พิมพ์f()ที่
นี้:
ใช้ปลาคาร์พ;
การเขียนย่อย {
บ่น "การใช้งาน: เขียน PICTURE ARGS" เว้นแต่ @_;
รูปแบบ $ ของฉัน = กะ;
$^A = "";
แบบฟอร์ม($format,@_);
ส่งคืน $^A;
}
$string = swrite(<<'สิ้นสุด', 1, 2, 3);
ตรวจสอบฉันออก
@<<< @||| @>>>
END
พิมพ์ $string;
คำเตือน
จุดเดียวที่สิ้นสุดรูปแบบยังสามารถสิ้นสุดข้อความเมลที่ส่งผ่าน a . ก่อนเวลาอันควร
การกำหนดค่าจดหมายทางอินเทอร์เน็ตไม่ถูกต้อง (และจากประสบการณ์ การกำหนดค่าผิดพลาดดังกล่าวเป็นกฎ
ไม่ใช่ข้อยกเว้น) ดังนั้นเวลาส่งรหัสรูปแบบทางไปรษณีย์ คุณควรเยื้องมัน
ว่าจุดสิ้นสุดรูปแบบไม่ได้อยู่ที่ระยะขอบด้านซ้าย สิ่งนี้จะป้องกันการตัด SMTP
ตัวแปรคำศัพท์ (ที่ประกาศด้วย "my") จะไม่ปรากฏให้เห็นภายในรูปแบบ เว้นแต่ว่า format
ถูกประกาศภายในขอบเขตของตัวแปรศัพท์
หากสภาพแวดล้อมของโปรแกรมระบุสถานที่ LC_NUMERIC และ "ใช้สถานที่" มีผล
เมื่อมีการประกาศรูปแบบ ภาษาจะใช้เพื่อระบุอักขระจุดทศนิยมใน
เอาต์พุตที่จัดรูปแบบ เอาต์พุตที่จัดรูปแบบไม่สามารถควบคุมโดย "ใช้สถานที่" ในขณะที่
เขียน() ถูกเรียก. ดู perllocale สำหรับการอภิปรายเพิ่มเติมเกี่ยวกับการจัดการสถานที่
ภายในสตริงที่จะแสดงในช่องข้อความที่มีความยาวคงที่ แต่ละตัวควบคุม
อักขระถูกแทนที่ด้วยช่องว่าง (แต่จำความหมายพิเศษของ "\r" ไว้เมื่อใช้
โหมดเติม) สิ่งนี้ทำเพื่อหลีกเลี่ยงการวางแนวเมื่ออักขระควบคุม "หายไป" บนบางส่วน
สื่อส่งออก
ใช้ perlform ออนไลน์โดยใช้บริการ onworks.net