GoGPT Best VPN GoSearch

ไอคอน Fav ของ OnWorks

perlhack - ออนไลน์ในคลาวด์

เรียกใช้ perlhack ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง perlhack ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


perlhack - วิธีแฮ็คบน Perl

DESCRIPTION


เอกสารนี้อธิบายวิธีการทำงานของการพัฒนา Perl ประกอบด้วยรายละเอียดเกี่ยวกับ Perl 5
รายชื่ออีเมลของ Porters, ที่เก็บ Perl, ตัวติดตามจุดบกพร่อง Perlbug, แนวทางแก้ไข และ
ความเห็นเกี่ยวกับปรัชญาการพัฒนา Perl

SUPER QUICK ปะ GUIDE


หากคุณต้องการส่งแพตช์เล็กๆ ตัวเดียว เช่น การแก้ไขพ็อด การทดสอบจุดบกพร่อง แสดงความคิดเห็น
แก้ไข ฯลฯ ง่ายนิดเดียว! โดยใช้วิธีดังนี้:

· ตรวจสอบที่เก็บซอร์ส

แหล่งที่มาของ Perl อยู่ในที่เก็บ git คุณสามารถโคลนที่เก็บด้วย
คำสั่งต่อไปนี้:

% git โคลน git://perl5.git.perl.org/perl.git perl

·ให้แน่ใจว่าคุณปฏิบัติตามคำแนะนำล่าสุด

ในกรณีที่คำแนะนำในคู่มือนี้ได้รับการปรับปรุงเมื่อเร็ว ๆ นี้ โปรดอ่านเวอร์ชันล่าสุด
โดยตรงจากแหล่ง Perl:

% พ็อด perldoc/perlhack.pod

· ทำการเปลี่ยนแปลงของคุณ

แฮก แฮก แฮก. โปรดทราบว่า Perl ทำงานบนหลายแพลตฟอร์มด้วย
ระบบปฏิบัติการต่างๆ ที่มีความสามารถต่างกัน ระบบไฟล์ต่างกัน
องค์กรและแม้กระทั่งชุดอักขระที่แตกต่างกัน perlhacktips ให้คำแนะนำในเรื่องนี้

·ทดสอบการเปลี่ยนแปลงของคุณ

คุณสามารถรันการทดสอบทั้งหมดด้วยคำสั่งต่อไปนี้:

% ./Configure -des -Dusevel
% ทำแบบทดสอบ

แฮ็คต่อไปจนกว่าการทดสอบจะผ่าน

·ยอมรับการเปลี่ยนแปลงของคุณ

ความมุ่งมั่นในการทำงานของคุณจะบันทึกการเปลี่ยนแปลง on ธุรกิจ ในประเทศ ระบบ:

% git commit -a -m 'Commit message ไปที่นี่'

ตรวจสอบให้แน่ใจว่าข้อความยืนยันอธิบายการเปลี่ยนแปลงของคุณในประโยคเดียว ตัวอย่างเช่น,
"แก้ไขข้อผิดพลาดในการสะกดคำใน perlhack.pod"

· ส่งการเปลี่ยนแปลงของคุณไปที่ perlbug

ขั้นตอนต่อไปคือการส่งแพตช์ของคุณไปยังระบบตั๋ว Perl core ทางอีเมล

หากการเปลี่ยนแปลงของคุณอยู่ในคอมมิต git เดียว ให้รันคำสั่งต่อไปนี้เพื่อสร้าง
แก้ไขไฟล์และแนบไปกับรายงานข้อบกพร่องของคุณ:

% รูปแบบ git-patch -1
% ./perl -Ilib utils/perlbug -p 0001-*.patch

โปรแกรม perlbug จะถามคำถามสองสามข้อเกี่ยวกับที่อยู่อีเมลของคุณและ
โปรแกรมแก้ไขที่คุณกำลังส่ง เมื่อคุณตอบคำถามแล้ว จะส่งแพตช์ของคุณผ่านทาง
ส่งอีเมล์

หากการเปลี่ยนแปลงของคุณอยู่ในการคอมมิตหลายครั้ง ให้สร้างไฟล์แพตช์สำหรับแต่ละอันและ
ระบุตัวเลือก "-p" ของ perlbug โดยคั่นด้วยเครื่องหมายจุลภาค:

% รูปแบบ git-patch -3
% ./perl -Ilib utils/perlbug -p 0001-fix1.patch,0002-fix2.patch,\
> 0003-fix3.patch

เมื่อได้รับแจ้ง ให้เลือกหัวข้อที่สรุปการเปลี่ยนแปลงของคุณ

· ขอขอบคุณ

พนักงานขนกระเป๋าชื่นชมเวลาที่คุณใช้ช่วยทำให้ Perl ดีขึ้น ขอขอบคุณ!

· คราวหน้า

ครั้งต่อไปที่คุณต้องการสร้างแพตช์ คุณต้องเริ่มจาก Perl ล่าสุดใน a
รัฐที่เก่าแก่ ตรวจสอบว่าคุณไม่มีการเปลี่ยนแปลงในเครื่องหรือไฟล์ที่เพิ่มใน Perl . ของคุณ
เช็คเอาท์ที่คุณต้องการเก็บไว้ จากนั้นรันคำสั่งเหล่านี้:

% คอมไพล์ดึง
% รีเซ็ต git - แหล่งกำเนิดยาก / เลือดออก
% git สะอาด -dxf

BUG รายงาน


หากคุณต้องการรายงานจุดบกพร่องใน Perl คุณต้องใช้ เพิร์ลบั๊ก เครื่องมือบรรทัดคำสั่ง นี้
เครื่องมือจะทำให้แน่ใจว่ารายงานข้อผิดพลาดของคุณรวมถึงระบบและการกำหนดค่าที่เกี่ยวข้องทั้งหมด
ข้อมูล

ในการเรียกดูข้อบกพร่องและแพตช์ของ Perl ที่มีอยู่ คุณสามารถใช้เว็บอินเตอร์เฟสที่
<http://rt.perl.org/>.

โปรดตรวจสอบที่เก็บถาวรของรายการ perl5-porters (ดูด้านล่าง) และ/หรือการติดตามจุดบกพร่อง
ระบบก่อนส่งรายงานข้อผิดพลาด บ่อยครั้งคุณจะพบว่ามีการรายงานจุดบกพร่อง
แล้ว.

คุณสามารถเข้าสู่ระบบติดตามจุดบกพร่องและแสดงความคิดเห็นในรายงานจุดบกพร่องที่มีอยู่ ถ้าคุณ
มีข้อมูลเพิ่มเติมเกี่ยวกับจุดบกพร่องที่มีอยู่ โปรดเพิ่มเข้าไป นี้จะช่วยให้
พนักงานยกกระเป๋าแก้ไขข้อผิดพลาด

PERL 5 พนักงานยกกระเป๋า


รายชื่อผู้รับจดหมาย perl5-porters (p5p) คือที่ที่การกระจายมาตรฐาน Perl ยังคงอยู่
และพัฒนา คนที่ดูแล Perl ก็เรียกอีกอย่างว่า "Perl 5 Porters"
"p5p" หรือเพียงแค่ "ลูกหาบ"

สามารถค้นหาไฟล์เก็บถาวรของรายการได้ที่
<http://markmail.org/search/?q=perl5-porters>. นอกจากนี้ยังมีที่เก็บถาวรที่
<http://archive.develooper.com/perl5-porters@perl.org/>.

perl-การเปลี่ยนแปลง ทางไปรษณีย์ รายการ
รายชื่อส่งเมลการเปลี่ยนแปลง perl5 จะได้รับสำเนาของแพตช์แต่ละรายการที่ส่งไปยัง
สาขาการบำรุงรักษาและการพัฒนาของที่เก็บ Perl ดู
<http://lists.perl.org/list/perl5-changes.html> สำหรับการสมัครและเก็บข้อมูล

#พีทูพี on ไออาร์ซี
พนักงานขนของจำนวนมากยังใช้งานอยู่บน ช่อง. เข้าร่วมได้เลยนะครับ
ช่องทางและถามคำถามเกี่ยวกับการแฮ็คบน Perl core

การเดินทาง DIE PERL แหล่งที่มา


ซอร์สโค้ดของ Perl ทั้งหมดถูกเก็บไว้ที่ส่วนกลางในที่เก็บ Git ที่ perl5.git.perl.org.
พื้นที่เก็บข้อมูลมีการแก้ไข Perl จำนวนมากตั้งแต่ Perl 1 เป็นต้นไปและการแก้ไขทั้งหมดจาก
Perforce ระบบควบคุมเวอร์ชันก่อนหน้า

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการใช้ git กับที่เก็บ Perl โปรดดูที่ perlgit

อ่าน เข้า ผ่านทาง ไป
คุณจะต้องมีสำเนาของ Git สำหรับคอมพิวเตอร์ของคุณ คุณสามารถดึงสำเนาของที่เก็บ
ใช้โปรโตคอล git:

% git โคลน git://perl5.git.perl.org/perl.git perl

สิ่งนี้จะโคลนที่เก็บและทำสำเนาในเครื่องใน Perl ไดเรกทอรี

หากคุณไม่สามารถใช้โปรโตคอล git ได้ด้วยเหตุผลของไฟร์วอลล์ คุณสามารถโคลนผ่าน http
แม้ว่าจะช้ากว่ามาก:

% git โคลน http://perl5.git.perl.org/perl.git Perl

อ่าน เข้า ผ่านทาง เว็บ
คุณสามารถเข้าถึงที่เก็บผ่านทางเว็บ นี้ทำให้คุณสามารถเรียกดูต้นไม้ ดู
คอมมิตล่าสุด, สมัครรับฟีด RSS สำหรับการเปลี่ยนแปลง, ค้นหาคอมมิตเฉพาะและ
มากกว่า. เข้าไปได้ที่http://perl5.git.perl.org/perl.git>. กระจกเงาของ
ที่เก็บข้อมูลอยู่ที่ .

อ่าน เข้า ผ่านทาง rsync
คุณยังสามารถเลือกใช้ rsync เพื่อรับสำเนาของแผนผังต้นทางปัจจุบันสำหรับ
bleadperl branch และสาขาการบำรุงรักษาทั้งหมด:

% rsync -avz rsync://perl5.git.perl.org/perl-current
% rsync -avz rsync://perl5.git.perl.org/perl-5.12.x
% rsync -avz rsync://perl5.git.perl.org/perl-5.10.x
% rsync -avz rsync://perl5.git.perl.org/perl-5.8.x
% rsync -avz rsync://perl5.git.perl.org/perl-5.6.x
% rsync -avz rsync://perl5.git.perl.org/perl-5.005xx

(เพิ่มตัวเลือก "--delete" เพื่อลบไฟล์ที่เหลือ)

ในการรับรายการจุดซิงค์ทั้งหมดที่มี:

% rsync perl5.git.perl.org::

เขียน เข้า ผ่านทาง คอมไพล์
หากคุณมีคอมมิตบิต โปรดดูที่ perlgit สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการใช้ git

แพทช์ PERL


หากคุณกำลังวางแผนที่จะทำงานที่กว้างขวางมากกว่าการแก้ไขปัญหาเล็กๆ น้อยๆ เราขอแนะนำให้คุณ
อ่านเอกสารด้านล่าง สิ่งนี้จะช่วยให้คุณมีสมาธิกับงานและทำแพทช์ของคุณ
ง่ายต่อการรวมเข้ากับแหล่ง Perl

กำลังส่ง แพทช์
หากคุณมีแพตช์เล็ก ๆ ที่จะส่ง โปรดส่งผ่าน perlbug คุณยังสามารถส่ง
ส่งอีเมลโดยตรงถึง [ป้องกันอีเมล]. โปรดทราบว่าข้อความที่ส่งไปยัง perlbug อาจถูกระงับ
ในคิวการกลั่นกรอง ดังนั้นคุณจะไม่ได้รับการตอบกลับทันที

คุณจะรู้ว่าการส่งของคุณได้รับการประมวลผลเมื่อคุณได้รับอีเมลจากตั๋วของเรา
ระบบติดตาม. อีเมลนี้จะให้หมายเลขตั๋วแก่คุณ เมื่อแพทช์ของคุณทำเสร็จแล้ว
ไปยังระบบติดตามตั๋วก็จะถูกส่งไปที่ [ป้องกันอีเมล] รายการ.

แพตช์ได้รับการตรวจสอบและอภิปรายในรายการ p5p แพทช์ที่เรียบง่ายและไม่ขัดแย้งจะ
มักจะนำไปใช้โดยไม่มีการพูดคุยใดๆ เมื่อแพทช์ถูกนำไปใช้ ตั๋วจะเป็น
อัปเดตแล้วคุณจะได้รับอีเมล นอกจากนี้ อีเมลจะถูกส่งไปยังรายการ p5p

ในกรณีอื่นๆ โปรแกรมแก้ไขจะต้องทำงานหรือพูดคุยกันมากกว่านี้ ที่จะเกิดขึ้นบน p5p
รายการ.

คุณได้รับการสนับสนุนให้เข้าร่วมในการอภิปรายและสนับสนุนโปรแกรมแก้ไขของคุณ
บางครั้งแพตช์ของคุณอาจหายไปในการสับเปลี่ยน เป็นการเหมาะสมที่จะส่งการเตือนความจำ
ส่งอีเมลไปที่ p5p หากไม่มีการดำเนินการใด ๆ ในหนึ่งเดือน โปรดจำไว้ว่า Perl 5
นักพัฒนาทุกคนล้วนเป็นอาสาสมัครและต้องสุภาพ

การเปลี่ยนแปลงจะมีผลโดยตรงกับสาขาการพัฒนาหลักที่เรียกว่า "blead" บาง
แพตช์อาจถูกแบ็คพอร์ตไปยังสาขาการบำรุงรักษา หากคุณคิดว่าแพตช์ของคุณเหมาะสม
สำหรับสาขาการบำรุงรักษา (ดู "สาขาการบำรุงรักษา" ใน perlpolicy) โปรดอธิบายว่าทำไม
เมื่อคุณส่งมัน

ได้รับ ธุรกิจ ปะ ได้รับการยอมรับ
หากคุณกำลังส่งโปรแกรมแก้ไขโค้ด มีหลายสิ่งที่คุณสามารถทำได้เพื่อช่วย
Perl 5 Porters ยอมรับแพทช์ของคุณ

ปะ สไตล์

หากคุณใช้ git เพื่อตรวจสอบแหล่งที่มาของ Perl การใช้ "git format-patch" จะสร้างa
แพทช์ในสไตล์ที่เหมาะกับ Perl คำสั่ง "format-patch" สร้างไฟล์แพทช์หนึ่งไฟล์
สำหรับแต่ละความมุ่งมั่นที่คุณทำ หากคุณต้องการส่งแพตช์เดียวสำหรับคอมมิตทั้งหมด คุณสามารถ
ใช้ "git diff"

% git เช็คเอาต์เบลด
% คอมไพล์ดึง
% git diff blead ชื่อสาขาของฉัน

สิ่งนี้จะสร้างแพตช์ตามความแตกต่างระหว่างเบลดและแบรนช์ปัจจุบันของคุณ มันคือ
สิ่งสำคัญคือต้องแน่ใจว่า blead เป็นข้อมูลล่าสุดก่อนที่จะสร้างความแตกต่าง นั่นคือเหตุผลที่เรา
เรียก "git pull" ก่อน

เราขอแนะนำให้คุณใช้ git ถ้าเป็นไปได้ มันจะทำให้ชีวิตของคุณง่ายขึ้นและ
ของเราด้วย

อย่างไรก็ตาม หากคุณไม่ได้ใช้ git คุณยังสามารถสร้างแพตช์ที่เหมาะสมได้ คุณจะต้อง
สำเนาที่เก่าแก่ของแหล่ง Perl ที่จะแตกต่าง คนเฝ้าประตูชอบความแตกต่างแบบรวมเป็นหนึ่ง
การใช้ GNU "diff" คุณสามารถสร้างส่วนต่างดังนี้:

% ส่วนต่าง -Npurd perl.pristine perl.mine

ตรวจสอบให้แน่ใจว่าคุณ "สร้าง realclean" ในสำเนา Perl ของคุณเพื่อลบสิ่งประดิษฐ์บิลด์หรือ
คุณอาจได้รับผลลัพธ์ที่สับสน

กระทำ ข่าวสาร

ในขณะที่คุณสร้างแพตช์แต่ละแพตช์ที่คุณตั้งใจจะส่งไปยัง Perl core สิ่งสำคัญคือต้องเขียน
ข้อความยืนยันที่ดี นี่เป็นสิ่งสำคัญอย่างยิ่งหากการส่งของคุณจะประกอบด้วยa
ชุดของการกระทำ

บรรทัดแรกของข้อความยืนยันควรเป็นคำอธิบายสั้นๆ โดยไม่มีจุด มัน
ไม่ควรยาวเกินหัวเรื่องของอีเมล 50 ตัวอักษรเป็นกฎที่ดีของ
นิ้วหัวแม่มือ

เครื่องมือ Git จำนวนมาก (Gitweb, GitHub, git log --pretty=oneline, ...) จะแสดงเฉพาะ
บรรทัดแรก (ตัดที่ 50 ตัวอักษร) เมื่อนำเสนอบทสรุปการคอมมิต

ข้อความยืนยันควรมีคำอธิบายของปัญหาที่โปรแกรมแก้ไขแก้ไขหรือ
ฟังก์ชันใหม่ที่แพตช์เพิ่มเข้ามา

ตามกฎทั่วไป ข้อความยืนยันของคุณควรช่วยโปรแกรมเมอร์ที่รู้จัก
Perl core เข้าใจอย่างรวดเร็วว่าคุณกำลังพยายามทำอะไร พยายามทำอะไร และ
เหตุใดการเปลี่ยนแปลงจึงสำคัญกับ Perl

· ทำไม

ข้อความยืนยันของคุณควรอธิบายว่าเหตุใดการเปลี่ยนแปลงที่คุณทำจึงมีความสำคัญ เมื่อไหร่
บางคนมองการเปลี่ยนแปลงของคุณในหกเดือนหรือหกปี เจตนาของคุณควรมีความชัดเจน

หากคุณกำลังเลิกใช้งานคุณลักษณะโดยมีจุดประสงค์เพื่อลดความซับซ้อนอีกเล็กน้อยของ
รหัสพูดอย่างนั้น หากคุณกำลังแก้ไขปัญหาด้านประสิทธิภาพหรือเพิ่มคุณสมบัติใหม่ให้กับ
สนับสนุนแกนหลักอื่น ๆ พูดถึงสิ่งนั้น

· อะไร

ข้อความยืนยันของคุณควรอธิบายว่าคุณกำลังเปลี่ยนแปลงส่วนใดของแกน Perl และ
สิ่งที่คุณคาดหวังให้โปรแกรมแก้ไขของคุณทำ

· ยังไง

แม้ว่าจะไม่จำเป็นสำหรับการเปลี่ยนแปลงเอกสาร การทดสอบใหม่ หรือแพตช์เล็กๆ น้อยๆ ก็ตาม
มักจะคุ้มค่าที่จะอธิบายว่าการเปลี่ยนแปลงของคุณทำงานอย่างไร แม้ว่าวันนี้จะชัดเจนสำหรับคุณ แต่ก็อาจ
ไม่ชัดเจนกับพนักงานยกกระเป๋าในเดือนหน้าหรือปีหน้า

ข้อความยืนยันไม่ได้มีวัตถุประสงค์เพื่อแทนที่ความคิดเห็นในโค้ดของคุณ ให้สัญญา
ข้อความควรอธิบายการเปลี่ยนแปลงที่คุณทำ ในขณะที่ความคิดเห็นเกี่ยวกับโค้ดควรอธิบายถึง
สถานะปัจจุบันของรหัส

หากคุณเพิ่งใช้คุณลักษณะใหม่ พร้อมเอกสาร การทดสอบ และการแสดงความคิดเห็นที่ดี
รหัสข้อความยืนยันสั้น ๆ มักจะพอเพียง อย่างไรก็ตาม หากคุณเพิ่งเปลี่ยน a
อักขระตัวเดียวลึกใน parser หรือ lexer คุณอาจต้องเขียนนวนิยายขนาดเล็กถึง
ตรวจสอบให้แน่ใจว่าผู้อ่านในอนาคตเข้าใจสิ่งที่คุณทำและทำไมคุณถึงทำ

ความคิดเห็น ความคิดเห็น ความคิดเห็น

อย่าลืมแสดงความคิดเห็นโค้ดของคุณอย่างเพียงพอ ในขณะที่การแสดงความคิดเห็นทุกบรรทัดนั้นไม่จำเป็น
อะไรก็ตามที่ใช้ประโยชน์จากผลข้างเคียงของตัวดำเนินการ ที่สร้างการเปลี่ยนแปลงที่จะ
รู้สึกว่าอยู่นอกเหนือฟังก์ชันที่ได้รับการแก้ไข หรือผู้อื่นอาจพบว่าสับสนควร
เอกสาร หากคุณกำลังจะผิดพลาด ทางที่ดีคือการเพิ่มมากเกินไป
แสดงความคิดเห็นน้อยกว่าน้อยเกินไป

ความคิดเห็นที่ดีที่สุดอธิบาย ทำไม รหัสทำในสิ่งที่มันไม่ อะไร it ทำ.

สไตล์

โดยทั่วไป โปรดปฏิบัติตามรูปแบบเฉพาะของโค้ดที่คุณกำลังแก้ไข

โดยเฉพาะอย่างยิ่ง ให้ปฏิบัติตามแนวทางทั่วไปเหล่านี้สำหรับการแก้ไขแหล่งที่มาของ Perl:

· แถบกว้าง 8 แถบ (ไม่มีข้อยกเว้น!)

· เยื้องทั้ง 4 ด้านสำหรับโค้ด, การเยื้อง 2 ด้านสำหรับ CPP ที่ซ้อนกัน #defines

· พยายามอย่าให้เกิน 79 คอลัมน์

· ต้นแบบ ANSI C

· Uncuddled elses และรูปแบบ "K&R" สำหรับการเยื้องโครงสร้างการควบคุม

·ไม่มีความคิดเห็นสไตล์ C++ (//)

· ทำเครื่องหมายสถานที่ที่ต้องไปอีกครั้งด้วย XXX (และกลับมาบ่อยๆ!)

· วงเล็บปีกกาเปิดขึ้นตรงกับ "if" เมื่อเงื่อนไขครอบคลุมหลายบรรทัด ควรอยู่ที่
ปลายสาย

· ในการกำหนดฟังก์ชัน ชื่อจะเริ่มต้นในคอลัมน์ 0 (ประเภทค่าที่ส่งกลับจะอยู่ที่ค่าก่อนหน้า
ไลน์)

· เว้นวรรคหลังคีย์เวิร์ดที่ตามด้วย parens ไม่มีช่องว่างระหว่างฟังก์ชัน
ชื่อและนามสกุลหลัง

· หลีกเลี่ยงการมอบหมายแบบมีเงื่อนไข แต่ถ้าหลีกเลี่ยงไม่ได้ ให้ใช้วงเล็บเสริม เช่น
"ถ้า (a && (b = c)) ..."

· "กลับฟู;" มากกว่า "return(foo);"

· "if (!foo) ..." แทนที่จะเป็น "if (foo == FALSE) ..." เป็นต้น

· ห้ามประกาศตัวแปรโดยใช้ "register" มันอาจจะต่อต้านกับความทันสมัย
คอมไพเลอร์และเลิกใช้แล้วใน C ++ โดยที่แหล่ง Perl เป็นประจำ
รวบรวม

· ฟังก์ชันอินไลน์ที่อยู่ในส่วนหัวที่สามารถเข้าถึงโค้ด XS ได้จะต้องสามารถ
เพื่อคอมไพล์โดยไม่มีการเตือนด้วยแฟล็กการคอมไพล์พิเศษที่ใช้กันทั่วไป เช่น gcc's
"-Wswitch-default" ซึ่งจะเตือนเมื่อใดก็ตามที่คำสั่ง switch ไม่มี "default"
กรณี. การใช้แฟล็กพิเศษเหล่านี้คือการตรวจจับปัญหาที่อาจเกิดขึ้นในรหัส C ทางกฎหมาย
และมักใช้โดยผู้รวบรวม Perl เช่นผู้จัดจำหน่าย Linux

เอกสาร ชุด

หากโปรแกรมแก้ไขของคุณเปลี่ยนรหัส (แทนที่จะเปลี่ยนเอกสาร) คุณควร
รวมกรณีทดสอบอย่างน้อยหนึ่งกรณีที่แสดงข้อบกพร่องที่คุณกำลังแก้ไขหรือตรวจสอบใหม่
ฟังก์ชันที่คุณกำลังเพิ่ม โดยทั่วไป คุณควรอัปเดตไฟล์ทดสอบที่มีอยู่แทน
กว่าจะสร้างใหม่

การเพิ่มชุดทดสอบของคุณโดยทั่วไปควรเป็นไปตามแนวทางเหล่านี้ (ได้รับความอนุเคราะห์จาก Gurusamy
สารภี[ป้องกันอีเมล]>):

·รู้ว่าคุณกำลังทดสอบอะไร อ่านเอกสารและแหล่งที่มา

· ล้มเหลวแต่ไม่สำเร็จ

· ตีความผลลัพธ์อย่างเคร่งครัด

· ใช้คุณสมบัติที่ไม่เกี่ยวข้อง (สิ่งนี้จะล้างการโต้ตอบที่แปลกประหลาดออกไป)

· ใช้สำนวนที่ไม่ได้มาตรฐาน (มิฉะนั้น คุณจะไม่ได้ทดสอบ TIMTOWTDI)

· หลีกเลี่ยงการใช้หมายเลขทดสอบแบบฮาร์ดโค้ดทุกครั้งที่ทำได้ (พบ EXPECTED/GOT ใน
t/op/tie.t สามารถบำรุงรักษาได้มากกว่า และให้รายงานความล้มเหลวที่ดีกว่า)

· ให้ข้อความแสดงข้อผิดพลาดที่มีความหมายเมื่อการทดสอบล้มเหลว

· หลีกเลี่ยงการใช้ qx// และ ระบบ() เว้นแต่คุณกำลังทดสอบพวกเขา ถ้าคุณใช้มัน
ตรวจสอบให้แน่ใจว่าคุณครอบคลุมแพลตฟอร์ม _all_ perl

· ยกเลิกการเชื่อมโยงไฟล์ชั่วคราวที่คุณสร้าง

· ส่งเสริมคำเตือนที่ไม่คาดฝันถึงข้อผิดพลาดด้วย $SIG{__WARN__}

· ตรวจสอบให้แน่ใจว่าใช้ไลบรารีและโมดูลที่มาพร้อมกับเวอร์ชันที่กำลังทดสอบ ไม่ใช่
ที่ติดตั้งไว้แล้ว

· เพิ่มความคิดเห็นในโค้ดเพื่ออธิบายสิ่งที่คุณกำลังทดสอบ

· ไม่จำเป็นต้องอัปเดตสตริง '1..42' หรือให้แน่ใจว่าคุณอัปเดต

· ทดสอบพฤติกรรม _all_ ของโอเปอเรเตอร์ ไลบรารี หรือฟังก์ชันที่กำหนด

ทดสอบอาร์กิวเมนต์ที่ไม่บังคับทั้งหมด

ทดสอบค่าที่ส่งคืนในบริบทต่างๆ (บูลีน สเกลาร์ รายการ lvalue)

ใช้ทั้งตัวแปรส่วนกลางและคำศัพท์

อย่าลืมกรณีพิเศษทางพยาธิวิทยา

ปะ a แกน โมดูล
การทำงานนี้เหมือนกับการแพตช์อย่างอื่นโดยมีข้อพิจารณาพิเศษอย่างหนึ่ง

โมดูลใน ซีแพน/ ไดเร็กทอรีของแผนผังต้นทางถูกรักษาไว้ภายนอก Perl core
เมื่อผู้เขียนอัปเดตโมดูล การอัปเดตจะถูกคัดลอกลงในแกนหลัก เห็นว่า
เอกสารประกอบของโมดูลหรือรายการบนhttp://search.cpan.org/> สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ
การรายงานจุดบกพร่องและการส่งแพตช์

ในกรณีส่วนใหญ่ แพตช์ไปยังโมดูลใน ซีแพน/ ควรส่งต้นน้ำและไม่ควร
นำไปใช้กับแกน Perl ทีละรายการ หากแพตช์เป็นไฟล์ใน ซีแพน/ ไม่สามารถทำได้อย่างแน่นอน
รอให้โปรแกรมแก้ไขอัปสตรีม ปล่อยไปที่ CPAN และคัดลอกไปที่ blead คุณต้องเพิ่ม
(หรืออัปเดต) รายการ "กำหนดเอง" ใน "การพอร์ต/maintainers.pl" ไฟล์เพื่อตั้งค่าสถานะว่า local
ได้มีการปรับเปลี่ยน ดู "การพอร์ต/maintainers.pl" .

ในทางตรงกันข้าม โมดูลใน dist / ไดเร็กทอรีจะยังคงอยู่ในแกนหลัก

ปรับปรุง เพิร์ลเดลต้า
สำหรับการเปลี่ยนแปลงที่สำคัญพอที่จะรับประกัน a พ็อด/perldelta.pod เข้ามา คนเฝ้าประตูจะ
รู้สึกยินดีเป็นอย่างยิ่งหากคุณส่งรายการเดลต้าพร้อมกับการเปลี่ยนแปลงที่แท้จริงของคุณ
การเปลี่ยนแปลงที่สำคัญรวมถึงแต่ไม่จำกัดเพียง:

· การเพิ่ม การเลิกใช้ หรือการลบคุณสมบัติหลัก

· การเพิ่ม การเลิกใช้ การถอด หรือการอัพเกรดโมดูลหลักหรือโมดูลชีวิตคู่

· เพิ่มการทดสอบหลักใหม่

· แก้ไขปัญหาด้านความปลอดภัยและจุดบกพร่องที่ผู้ใช้มองเห็นได้ในคอร์

· การเปลี่ยนแปลงที่อาจทำลายรหัสที่มีอยู่ ทั้งในระดับ Perl หรือ C

· การปรับปรุงประสิทธิภาพที่สำคัญ

· การเพิ่ม การลบ หรือการเปลี่ยนแปลงเอกสารสำคัญใน ฝัก/ ไดเรกทอรี

· การเปลี่ยนแปลงเฉพาะแพลตฟอร์มที่สำคัญ

โปรดตรวจสอบให้แน่ใจว่าคุณได้เพิ่มรายการ perldelta ลงในส่วนที่ถูกต้องภายใน
พ็อด/perldelta.pod. มีข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเขียนรายการ Perldelta ที่ดี
ในส่วน "สไตล์" ของ การย้าย/how_to_write_a_perldelta.pod.

อะไร ทำให้ สำหรับ a ดี ปะ?
คุณลักษณะและส่วนขยายใหม่ๆ ของภาษาอาจเป็นข้อโต้แย้งได้ ไม่มีชุดเฉพาะ
ของเกณฑ์ที่กำหนดว่าจะเพิ่มคุณสมบัติใดบ้าง แต่นี่คือคำถามบางส่วนที่จะ
พิจารณาเมื่อพัฒนาโปรแกรมแก้ไข:

ไม่ แนวคิด การจับคู่ ทั่วไป เป้าหมาย of เพิร์ล?

เป้าหมายของเรารวมถึงแต่ไม่จำกัดเพียง:

1. ทำให้มันรวดเร็ว เรียบง่าย และมีประโยชน์

2. รักษาคุณลักษณะ/แนวคิดให้เป็นมุมฉากให้ได้มากที่สุด

3. ไม่มีข้อจำกัดตามอำเภอใจ (แพลตฟอร์ม ขนาดข้อมูล วัฒนธรรม)

4. ให้มันเปิดกว้างและน่าตื่นเต้นในการใช้/แก้ไข/สนับสนุน Perl ทุกที่

5. ดูดซับเทคโนโลยีใหม่ ๆ หรือสร้างสะพานเชื่อมกับพวกมัน

ที่ไหน is การดำเนินการ?

การพูดคุยทั้งหมดในโลกนี้ไร้ประโยชน์หากไม่มีการนำไปปฏิบัติ ในเกือบทุกกรณี
บุคคลหรือผู้ที่โต้แย้งสำหรับคุณสมบัติใหม่จะถูกคาดหวังให้เป็นผู้ดำเนินการ
มัน. พนักงานขนของสามารถเขียนโค้ดคุณลักษณะใหม่ ๆ มีวาระของตนเองและไม่พร้อมใช้งาน
เพื่อนำความคิด (อาจจะดี) ของคุณไปใช้

ย้อนกลับ ความเข้ากันได้

การทำลายโปรแกรม Perl ที่มีอยู่ถือเป็นบาปที่สำคัญ คำเตือนใหม่สามารถ
เป็นที่ถกเถียงกัน บางคนบอกว่าโปรแกรมที่ส่งคำเตือนไม่เสียหาย ในขณะที่บางคนพูดว่า
มันคือ. การเพิ่มคีย์เวิร์ดมีศักยภาพที่จะทำลายโปรแกรมเปลี่ยนความหมายของ
ลำดับโทเค็นหรือฟังก์ชันที่มีอยู่อาจทำให้โปรแกรมเสียหาย

คอร์ Perl 5 มีกลไกที่ช่วยให้พนักงานยกกระเป๋าทำการเปลี่ยนแปลงที่เข้ากันไม่ได้แบบย้อนหลัง
เข้ากันได้มากขึ้น เช่น คุณลักษณะและโมดูลที่เลิกใช้แล้ว โปรดใช้เมื่อ
เหมาะสม

ได้ it be a โมดูล แทน?

Perl 5 มีกลไกการขยาย โมดูล และ XS โดยเฉพาะเพื่อหลีกเลี่ยงความจำเป็นในการเก็บ
เปลี่ยนล่าม Perl คุณสามารถเขียนโมดูลที่ส่งออกฟังก์ชันได้ คุณสามารถให้
ฟังก์ชันเหล่านั้นเป็นต้นแบบเพื่อให้สามารถเรียกได้เหมือนฟังก์ชันในตัว คุณยังสามารถ
เขียนโค้ด XS เพื่อยุ่งกับโครงสร้างข้อมูลรันไทม์ของล่าม Perl หากคุณต้องการ
เพื่อนำสิ่งที่ซับซ้อนจริงๆ ไปใช้

เมื่อใดก็ตามที่เป็นไปได้ คุณลักษณะใหม่ควรจะสร้างต้นแบบในโมดูล CPAN ก่อนที่พวกเขาจะเป็น
ถือเป็นแก่นของ

Is ลักษณะ ทั่วไป พอ?

นี่คือสิ่งที่เฉพาะผู้ส่งต้องการเพิ่มในภาษาหรือเป็นอย่างกว้าง ๆ
มีประโยชน์? บางครั้ง แทนที่จะเพิ่มคุณลักษณะที่มีโฟกัสแน่น พนักงานยกกระเป๋าอาจ
ตัดสินใจที่จะรอจนกว่าจะมีคนใช้คุณลักษณะทั่วไปมากขึ้น

ไม่ it ที่อาจเกิดขึ้น แนะนำ ใหม่ ข้อบกพร่อง?

การเขียนซ้ำครั้งใหญ่ของล่าม Perl ชิ้นใหญ่มีศักยภาพที่จะแนะนำ
ข้อบกพร่องใหม่

สรุป ความน่าเชื่อถือของ Olymp Trade? ใหญ่ is มันได้หรือไม่

การเปลี่ยนแปลงที่เล็กกว่าและแปลเป็นภาษาท้องถิ่นได้มากเท่าไหร่ก็ยิ่งดีเท่านั้น ในทำนองเดียวกัน ชุดของเล็ก
แพตช์เป็นที่ต้องการมากกว่าแพตช์ขนาดใหญ่เพียงอันเดียว

ไม่ it ดักคอ อื่น ๆ น่าพอใจ คุณสมบัติ?

แพทช์มีแนวโน้มที่จะถูกปฏิเสธหากปิดเส้นทางการพัฒนาในอนาคต สำหรับ
ตัวอย่าง แพทช์ที่วางการตีความที่แท้จริงและขั้นสุดท้ายบนต้นแบบมีแนวโน้มที่จะ
ถูกปฏิเสธเพราะยังมีทางเลือกสำหรับอนาคตของต้นแบบที่ยังไม่ได้
ที่กล่าวถึง

Is การดำเนินงาน แข็งแกร่ง?

แพทช์ที่ดี (โค้ดแน่น สมบูรณ์ ถูก) มีโอกาสเข้ามากกว่า เลอะเทอะหรือ
แพทช์ที่ไม่ถูกต้องอาจถูกวางไว้บนเตาด้านหลังจนกว่าฟักทองจะมีเวลาแก้ไข
หรืออาจถูกละทิ้งโดยสิ้นเชิงโดยไม่ต้องแจ้งให้ทราบล่วงหน้า

Is การดำเนินงาน ทั่วไป พอ ไปยัง be แบบพกพา?

แพทช์ที่แย่ที่สุดใช้ประโยชน์จากคุณลักษณะเฉพาะของระบบ ไม่น่าเป็นไปได้อย่างยิ่งที่การไม่
การเพิ่มเติมแบบพกพาสำหรับภาษา Perl จะได้รับการยอมรับ

Is การดำเนินงาน ทดสอบ?

แพตช์ที่เปลี่ยนพฤติกรรม (แก้ไขข้อบกพร่องหรือแนะนำคุณสมบัติใหม่) จะต้องประกอบด้วย
การทดสอบการถดถอยเพื่อตรวจสอบว่าทุกอย่างทำงานได้ตามที่คาดไว้

หากไม่มีการทดสอบโดยผู้เขียนดั้งเดิม คนอื่นจะเปลี่ยน Perl ใน . ได้อย่างไร
ในอนาคตต้องแน่ใจว่าพวกเขาไม่ได้ทำลายพฤติกรรมที่โปรแกรมแก้ไขใช้โดยไม่ได้ตั้งใจ?
และหากปราศจากการทดสอบ ผู้เขียนแพตช์จะมั่นใจได้อย่างไรว่างานหนักของเขา/เธอทุ่มเทให้กับ
แพทช์จะไม่ถูกใครบางคนโยนทิ้งไปโดยไม่ได้ตั้งใจในอนาคต?

Is มี พอ เอกสาร?

แพทช์ที่ไม่มีเอกสารประกอบอาจเป็นการคิดไม่ดีหรือไม่สมบูรณ์ ไม่มีคุณสมบัติสามารถ
เพิ่มหรือเปลี่ยนแปลงโดยไม่ต้องมีเอกสารประกอบ ดังนั้นให้ส่งโปรแกรมแก้ไขสำหรับพ็อดที่เหมาะสม
เอกสารและซอร์สโค้ดเป็นสิ่งสำคัญ

Is มี อื่น ทาง ไปยัง do มันได้หรือไม่

แลร์รี่กล่าวว่า "ถึงแม้ว่าสโลแกนของ Perl จะเป็น มี เพิ่มเติม กว่า หนึ่ง ทาง ไปยัง Do It, ฉันลังเลที่จะ
ทำ 10 วิธีในการทำบางสิ่งบางอย่าง" นี่เป็นฮิวริสติกที่ยุ่งยากในการนำทาง แม้ว่า-- ของผู้ชายคนเดียว
นอกจากนี้ที่สำคัญคือความหยาบคายที่ไร้จุดหมายของชายอีกคนหนึ่ง

ไม่ it สร้าง เกินไป มาก ทำงานอย่างไร

ทำงานให้กับ Pumpking, ทำงานให้กับโปรแกรมเมอร์ Perl, ทำงานให้กับผู้เขียนโมดูล, ... Perl is
น่าจะง่าย

แพทช์ พูด ดัง กว่า คำ

รหัสการทำงานมักนิยมใช้กับแนวคิดแบบพายในท้องฟ้า แพตช์เพื่อเพิ่มฟีเจอร์ย่อ
มีโอกาสสร้างภาษามากกว่าคำขอคุณสมบัติแบบสุ่ม no
ไม่ว่าคำขอนั้นจะโต้เถียงกันอย่างแรงกล้าเพียงใด สิ่งนี้เชื่อมโยงกับ "มันจะมีประโยชน์หรือไม่" เช่น
ความจริงที่ว่ามีคนใช้เวลาในการทำแพทช์แสดงให้เห็นถึงความปรารถนาอย่างแรงกล้าสำหรับ
ลักษณะ

ทดสอบ


แกนกลางใช้รูปแบบการทดสอบเดียวกันกับ Perl ที่เหลือ โดยเรียกใช้ "ok/not ok" อย่างง่าย
การทดสอบ::สายรัด แต่มีข้อควรพิจารณาพิเศษบางประการ

มีสามวิธีในการเขียนการทดสอบในแกนหลัก: Test::More, t/test.pl และเฉพาะกิจ "พิมพ์
$ทดสอบ ? "ok 42\n" : "not ok 42\n"" การตัดสินใจที่จะใช้ขึ้นอยู่กับว่าส่วนไหนของ
ชุดทดสอบที่คุณกำลังทำงานอยู่ เป็นมาตรการป้องกันความล้มเหลวในระดับสูง (เช่น
เนื่องจาก Config.pm แตก) จากการทำให้การทดสอบฟังก์ชันพื้นฐานล้มเหลว

การขอ t/test.pl ห้องสมุดมีคุณสมบัติบางอย่างของ Test :: More แต่หลีกเลี่ยงการโหลดมากที่สุด
โมดูลและใช้คุณลักษณะหลักให้น้อยที่สุด

หากคุณเขียนการทดสอบของคุณเอง ให้ใช้ Test Anything Protocolhttp://testanything.org>.

· t/เบส, เสื้อ/เปรียบเทียบ และ เสื้อ/opbasic

เนื่องจากเราไม่รู้ว่า "จำเป็น" ใช้งานได้หรือไม่ หรือแม้แต่รูทีนย่อย ให้ใช้การทดสอบเฉพาะกิจสำหรับ
สามคนนี้ ดำเนินการอย่างระมัดระวังเพื่อหลีกเลี่ยงการใช้คุณลักษณะที่กำลังทดสอบ การทดสอบใน
เสื้อ/opbasicตัวอย่างเช่น ถูกวางไว้ที่นั่นมากกว่าใน สูงสุด เพราะพวกเขาทดสอบ
ฟังก์ชันที่ t/test.pl สันนิษฐานได้แสดงให้เห็นแล้วว่าใช้งานได้

· เสื้อ/ซม, เสื้อ / วิ่ง, เสื้อ/ไอโอ และ สูงสุด

ตอนนี้พื้นฐาน ต้องการ () และทดสอบรูทีนย่อยแล้ว คุณสามารถใช้ t/test.pl
ห้องสมุด.

คุณยังสามารถใช้ไลบรารีบางตัว เช่น Config แบบมีเงื่อนไข แต่อย่าลืมข้าม
ทดสอบอย่างสง่างามถ้าไม่มี

· อย่างอื่น

ตอนนี้แกนของ Perl ได้รับการทดสอบแล้ว Test::More can and should be used. นอกจากนี้คุณยังสามารถ
ใช้ชุดโมดูลหลักแบบเต็มในการทดสอบ

เมื่อคุณพูดว่า "ทำการทดสอบ" Perl จะใช้ เสื้อ/ทดสอบ โปรแกรมเพื่อรันชุดทดสอบ (ยกเว้น under
Win32 ที่มันใช้ เสื้อ/สายรัด แทนที่). การทดสอบทั้งหมดดำเนินการจาก t/ ไดเรกทอรี ไม่
ไดเร็กทอรีที่มีการทดสอบ สิ่งนี้ทำให้เกิดปัญหากับการทดสอบใน lib /ดังนั้น
นี่เป็นโอกาสสำหรับการแพตช์

คุณต้องตระหนักถึงข้อกังวลข้ามแพลตฟอร์มสามเท่า ซึ่งมักจะเดือดลงไปที่การใช้
File::Spec หลีกเลี่ยงสิ่งต่าง ๆ เช่น "fork()" และ "system()" เว้นแต่จำเป็นจริงๆ และ
ไม่ถือว่าอักขระที่กำหนดมีค่าลำดับเฉพาะ (จุดรหัส) หรือว่า
การแสดง UTF-8 ประกอบด้วยไบต์เฉพาะ

มีฟังก์ชันหลายอย่างที่สามารถระบุอักขระและจุดโค้ดแบบเคลื่อนย้ายได้ใน
การทดสอบ ฟังก์ชันที่โหลดไว้ล่วงหน้าเสมอ "utf8::unicode_to_native()" และผกผัน
"utf8::native_to_unicode()" ใช้จุดโค้ดและแปลอย่างเหมาะสม ไฟล์
t/charset_tools.pl มีหลายฟังก์ชันที่สามารถใช้ประโยชน์ได้ มีเวอร์ชันของ
สองฟังก์ชันก่อนหน้าที่รับสตริงเป็นอินพุต ไม่ใช่จุดรหัสตัวเลขเดียว:
"uni_to_native()" และ "native_to_uni()" หากคุณต้องดูที่แต่ละไบต์
ประกอบด้วยสตริงที่เข้ารหัส UTF-8 "byte_utf8a_to_utf8n()" ใช้เป็นสตริงอินพุตของ
ไบต์เหล่านั้นเข้ารหัสสำหรับแพลตฟอร์ม ASCII และส่งคืนสตริงที่เทียบเท่าในเนทีฟ
แพลตฟอร์ม. ตัวอย่างเช่น "byte_utf8a_to_utf8n("\xC2\xA0")" ส่งคืนลำดับไบต์บน
แพลตฟอร์มปัจจุบันที่สร้าง UTF-8 สำหรับ "U+00A0" เนื่องจาก "\xC2\xA0" เป็นไบต์ UTF-8
แพลตฟอร์ม ASCII สำหรับจุดโค้ดนั้น ฟังก์ชันนี้ส่งคืน "\xC2\xA0" บน ASCII
แพลตฟอร์ม และ "\x80\x41" บน EBCDIC 1047

แต่ที่ง่ายที่สุดคือ หากระบุอักขระเป็นตัวอักษรได้ เช่น "A" หรือ "%" ให้ใช้
นั่น; หากไม่เจาะจงคุณสามารถใช้ use "\N{}" ได้ หากผลข้างเคียงไม่
ลำบาก เพียงระบุอักขระทั้งหมดของคุณเป็นฐานสิบหก โดยใช้ "\N{U+ZZ}" แทน
"\xZZ". "\N{}" คือชื่อ Unicode ดังนั้นจึงให้อักขระ Unicode แก่คุณเสมอ
"\N{U+41}" เป็นอักขระที่มีจุดรหัส Unicode คือ 0x41 ดังนั้นจึงเป็น 'A' ทั้งหมด
แพลตฟอร์ม ผลข้างเคียงคือ:

1) กฎ Unicode ที่เลือกเหล่านี้ นั่นหมายความว่าในสตริง double-quotish สตริง is
แปลงเป็น UTF-8 เสมอเพื่อบังคับการตีความ Unicode (คุณสามารถ
"utf8::downgrade()" หลังจากนั้นให้แปลงกลับเป็นไม่ใช่ UTF8 หากเป็นไปได้) เป็นประจำ
รูปแบบนิพจน์การแปลงจะไม่เสร็จสิ้น แต่ถ้าตัวแก้ไขชุดอักขระ
มิฉะนั้นจะเป็น "/d" มันถูกเปลี่ยนเป็น "/u"

2) หากคุณใช้แบบฟอร์ม "\N{ตัวอักษร ชื่อ}", โมดูล charnames จะได้รับโดยอัตโนมัติ
โหลดแล้ว ซึ่งอาจไม่เหมาะกับระดับการทดสอบที่คุณทำอยู่

หากคุณกำลังทดสอบโลแคล (ดู perllocale) มีฟังก์ชันตัวช่วยใน t/loc_tools.pl
เพื่อให้คุณเห็นว่ามีสถานที่ใดบ้างบนแพลตฟอร์มปัจจุบัน

พิเศษ "ทำ ทดสอบ" เป้าหมาย
มีเป้าหมาย make พิเศษต่างๆ ที่สามารถใช้ทดสอบ Perl ได้แตกต่างกันเล็กน้อย
กว่าเป้าหมาย "ทดสอบ" มาตรฐาน ไม่ใช่ทั้งหมดที่พวกเขาคาดว่าจะให้อัตราความสำเร็จ 100%
หลายชื่อมีนามแฝงหลายตัว และหลายชื่อไม่พร้อมใช้งานในบางระบบปฏิบัติการ
ระบบ

· test_porting

การดำเนินการนี้จะเรียกใช้การทดสอบสุขภาพจิตพื้นฐานบนแผนผังต้นทางและช่วยตรวจจับข้อผิดพลาดพื้นฐาน
ก่อนที่คุณจะส่งแพตช์

· มินิเทส

วิ่ง มินิเพิร์ล on t/เบส, เสื้อ/เปรียบเทียบ, เสื้อ/ซม, เสื้อ / วิ่ง, เสื้อ/ไอโอ, สูงสุด, เสื้อ/ยูนิ และ ตัน/ม การทดสอบ

· test.valgrind ตรวจสอบ.valgrind

(เฉพาะใน Linux) เรียกใช้การทดสอบทั้งหมดโดยใช้หน่วยความจำรั่ว + เครื่องมือเข้าถึงหน่วยความจำที่ซุกซน
"วาลกรินด์". ไฟล์บันทึกจะมีชื่อว่า ชื่อทดสอบ.valgrind.

· test_harness

เรียกใช้ชุดทดสอบด้วย the เสื้อ/สายรัด ควบคุมโปรแกรมแทน เสื้อ/ทดสอบ.
เสื้อ/สายรัด มีความซับซ้อนมากขึ้น และใช้โมดูล Test::Harness จึงใช้สิ่งนี้
เป้าหมายการทดสอบสมมติว่า Perl ใช้งานได้เป็นส่วนใหญ่ ข้อได้เปรียบหลักสำหรับวัตถุประสงค์ของเราคือ
ที่พิมพ์สรุปรายละเอียดของการทดสอบที่ล้มเหลวในตอนท้าย ไม่เหมือน เสื้อ/ทดสอบมัน
ไม่เปลี่ยนเส้นทาง stderr ไปที่ stdout

โปรดทราบว่าภายใต้ Win32 เสื้อ/สายรัด ใช้แทน .เสมอ เสื้อ/ทดสอบดังนั้นจึงไม่มี
เป้าหมาย "test_harness" พิเศษ

ภายใต้เป้าหมาย "การทดสอบ" ของ Win32 คุณสามารถใช้สภาพแวดล้อม TEST_SWITCHES และ TEST_FILES
ตัวแปรควบคุมพฤติกรรมของ เสื้อ/สายรัด. นี่หมายความว่าคุณสามารถพูดได้

nmake ทดสอบ TEST_FILES="op/*.t"
nmake ทดสอบ TEST_SWITCHES="-torture" TEST_FILES="op/*.t"

· ทดสอบ notty test_notty

ตั้งค่า PERL_SKIP_TTY_TEST เป็นจริงก่อนที่จะรันการทดสอบปกติ

Parallel การทดสอบ
การกระจายหลักสามารถรันการทดสอบการถดถอยแบบคู่ขนานบนแพลตฟอร์มที่เหมือน Unix
แทนที่จะรัน "make test" ให้ตั้งค่า "TEST_JOBS" ในสภาพแวดล้อมของคุณเป็นจำนวนการทดสอบ
เพื่อทำงานแบบขนานและเรียกใช้ "make test_harness" บนเปลือกที่เหมือนบอร์น สามารถทำได้
as

TEST_JOBS=3 ทำ test_harness # รัน 3 การทดสอบแบบขนาน

มีการใช้ตัวแปรสภาพแวดล้อมแทนที่จะสร้างตัวมันเองเพราะ TAP::Harness
จะต้องสามารถกำหนดเวลาสคริปต์ทดสอบที่ไม่ขัดแย้งกันแต่ละรายการได้เองและมี
ไม่มีอินเทอร์เฟซมาตรฐานสำหรับ "สร้าง" ยูทิลิตี้เพื่อโต้ตอบกับตัวกำหนดตารางเวลางาน

โปรดทราบว่าขณะนี้สคริปต์ทดสอบบางตัวอาจล้มเหลวเมื่อรันแบบขนาน (ที่โดดเด่นที่สุด
ต่อ/IO/t/io_dir.t). หากจำเป็น ให้รันเฉพาะสคริปต์ที่ล้มเหลวอีกครั้งตามลำดับและดู
หากความล้มเหลวหายไป

เล่น การทดสอบ by มือ
คุณสามารถเรียกใช้ชุดทดสอบบางส่วนด้วยมือโดยใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้จาก
t/ ไดเรกทอรี:

./perl -ฉัน../ lib ทดสอบ list-of-.t-files

or

./perl -ฉัน../ lib สายรัด list-of-.t-files

(หากคุณไม่ระบุสคริปต์ทดสอบ ระบบจะเรียกใช้ชุดการทดสอบทั้งหมด)

การใช้ เสื้อ/สายรัด สำหรับ การทดสอบ
หากคุณใช้ "harness" ในการทดสอบ คุณจะมีตัวเลือกบรรทัดคำสั่งหลายตัวเลือก
อาร์กิวเมนต์มีดังนี้ และอยู่ในลำดับที่ต้องปรากฏหากใช้ร่วมกัน

สายรัด -v -torture -re=pattern รายการไฟล์ที่จะทดสอบ
สายรัด -v -torture -re รายการรูปแบบที่จะจับคู่

หากละเว้น "รายการไฟล์ที่จะทดสอบ" รายการไฟล์จะได้รับจากรายการ ดิ
รายการไฟล์อาจมีสัญลักษณ์แทนเชลล์ซึ่งจะถูกขยายออก

· -v

รันการทดสอบภายใต้โหมด verbose เพื่อให้คุณเห็นว่าการทดสอบใดถูกเรียกใช้ และดีบักเอาต์พุต

· -ทรมาน

เรียกใช้การทดสอบการทรมานเช่นเดียวกับชุดปกติ

· -re=รูปแบบ

กรองรายการไฟล์เพื่อให้ไฟล์ทดสอบทั้งหมดทำงานตรงกับ PATTERN โปรดทราบว่าสิ่งนี้
รูปแบบแตกต่างจาก -re รายการ OF รูปแบบ แบบฟอร์มด้านล่างเพื่อให้ไฟล์
รายการที่จะให้ด้วย

· -re รายการรูปแบบ

กรองรายการไฟล์เพื่อให้ไฟล์ทดสอบทั้งหมดทำงานตรงกัน /(LIST|OF|PATTERNS)/. หมายเหตุ
ด้วยรูปแบบนี้รูปแบบจะถูกรวมด้วย '|' และคุณไม่สามารถจัดหารายการของ
ไฟล์ แทนที่จะได้ไฟล์ทดสอบจาก MANIFEST

คุณสามารถรันการทดสอบแต่ละรายการโดยใช้คำสั่งที่คล้ายกับ

./perl -ฉัน../ lib เส้นทาง/to/foo.t

ยกเว้นว่าสายรัดจะตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างที่อาจส่งผลต่อการดำเนินการ
ของการทดสอบ:

· PERL_CORE=1

แสดงว่าเรากำลังรันการทดสอบนี้โดยเป็นส่วนหนึ่งของชุดทดสอบ Perl core นี่คือ
มีประโยชน์สำหรับโมดูลที่มีชีวิตคู่บน CPAN

· PERL_DESTRUCT_LEVEL=2

ถูกตั้งค่าเป็น 2 หากยังไม่ได้ตั้งค่า (ดู "PERL_DESTRUCT_LEVEL" ใน perlhacktips)

· เพิร์ล

(ใช้โดย .เท่านั้น เสื้อ/ทดสอบ) หากตั้งค่าไว้ ให้แทนที่พาธไปยังไฟล์สั่งการ perl ที่ควรจะเป็น
ใช้ในการรันการทดสอบ (ค่าเริ่มต้นเป็น ./เพิร์ล).

· PERL_SKIP_TTY_TEST

ถ้าตั้งค่าไว้ บอกให้ข้ามการทดสอบที่ต้องใช้เทอร์มินัล มันถูกตั้งค่าโดยอัตโนมัติจริง ๆ
โดย Makefile แต่สามารถบังคับเทียมได้ด้วยการเรียกใช้ 'make test_notty'

อื่นๆ สิ่งแวดล้อม ตัวแปร ที่ อาจ มีอิทธิพล การทดสอบ

· PERL_TEST_Net_Ping

การตั้งค่าตัวแปรนี้จะรันการทดสอบโมดูล Net::Ping ทั้งหมด มิฉะนั้นการทดสอบบางอย่างนั้น
โต้ตอบกับโลกภายนอกจะถูกข้าม ดู perl58delta

· PERL_TEST_NOVREXX

การตั้งค่าตัวแปรนี้จะข้ามการทดสอบ vrexx.t สำหรับ OS2::REXX

· PERL_TEST_NUM CONVERTS

สิ่งนี้ตั้งค่าตัวแปรใน op/numconvert.t

· PERL_TEST_MEMORY

การตั้งค่าตัวแปรนี้รวมถึงการทดสอบใน ที/bigmem/. ควรตั้งค่านี้เป็น
จำนวนหน่วยความจำกิกะไบต์ที่สามารถทดสอบได้ เช่น "PERL_TEST_MEMORY=4"
ระบุว่าการทดสอบที่ต้องใช้หน่วยความจำ 4GiB นั้นสามารถทำงานได้อย่างปลอดภัย

ดูเอกสารประกอบสำหรับโมดูล Test and Test::Harness สำหรับสภาพแวดล้อมเพิ่มเติม
ตัวแปรที่ส่งผลต่อการทดสอบ

ประสิทธิภาพ การทดสอบ
ไฟล์ t/perf/เกณฑ์มาตรฐาน มีตัวอย่างโค้ด perl ซึ่งมีวัตถุประสงค์เพื่อเป็น
เปรียบเทียบกับช่วงของ Perls โดย การย้าย/bench.pl เครื่องมือ. หากคุณแก้ไขหรือปรับปรุง
ปัญหาด้านประสิทธิภาพ คุณอาจต้องการเพิ่มตัวอย่างรหัสตัวแทนไปยังไฟล์ จากนั้นเรียกใช้
ม้านั่ง.pl เทียบกับ perls ก่อนหน้าและปัจจุบันเพื่อดูว่ามันสร้างความแตกต่างอย่างไรและ
ไม่ว่าจะมีอะไรช้าลงเป็นผล

ไฟล์ t/perf/opcount.t ได้รับการออกแบบมาเพื่อทดสอบว่าข้อมูลโค้ดใดได้รับ
รวบรวมเป็น optree ที่มีจำนวนที่ระบุของประเภท op เฉพาะ ดีจัง
สำหรับการทดสอบว่าการเพิ่มประสิทธิภาพซึ่งเปลี่ยนแปลง ops เช่นการแปลง "aelem" op เป็น
op "aelemfast" กำลังทำอย่างนั้นจริงๆ

ไฟล์ t/perf/speed.t และ t/re/speed.t ออกแบบมาเพื่อทดสอบสิ่งต่าง ๆ ที่ใช้เป็นพัน
ช้าลงหลายเท่าหากการปรับให้เหมาะสมบางอย่างใช้งานไม่ได้ (เช่น แคชความยาว utf8
บนสตริง utf8 แบบยาว) เพิ่มการทดสอบที่จะใช้เวลาเสี้ยววินาทีตามปกติและ
มิฉะนั้น ทำให้ไฟล์ทดสอบหมดเวลาเมื่อเกิดข้อผิดพลาด

เพิ่มเติม การอ่าน สำหรับ GUTS แฮกเกอร์


ในการแฮ็กความกล้าของ Perl คุณจะต้องอ่านสิ่งต่อไปนี้:

· เพิร์ลซอร์ส

ภาพรวมของทรีซอร์สของ Perl สิ่งนี้จะช่วยคุณค้นหาไฟล์ที่คุณกำลังค้นหา
สำหรับ

· เชื่อมต่อ

ภาพรวมของซอร์สโค้ดล่าม Perl และรายละเอียดบางอย่างเกี่ยวกับวิธีที่ Perl ทำอะไร
มันทำ

· เพิร์ลแฮ็กตุต

เอกสารนี้จะอธิบายเกี่ยวกับการสร้างแพตช์ขนาดเล็กสำหรับโค้ด C ของ Perl ถ้าคุณคือ
เพิ่งเริ่มต้นใช้งาน Perl core hacking มันจะช่วยให้คุณเข้าใจวิธีการของมัน
โรงงาน

· perlhacktips

รายละเอียดเพิ่มเติมเกี่ยวกับการแฮ็ค Perl core เอกสารนี้เน้นรายละเอียดระดับล่าง
เช่น วิธีเขียนการทดสอบ ปัญหาการคอมไพล์ การพกพา การดีบัก เป็นต้น

หากคุณวางแผนที่จะทำการแฮ็ก C อย่างจริงจังโปรดอ่านสิ่งนี้

· perlgus

นี่เป็นสิ่งสำคัญยิ่ง เนื่องจากเป็นเอกสารของสิ่งที่เกิดขึ้นใน
แหล่งที่มาของ Perl อ่านสองสามรอบแล้วเริ่มเข้าใจ -
อย่าเพิ่งกังวลหากยังไม่ได้ เพราะวิธีที่ดีที่สุดในการศึกษาคือการอ่านใน
ร่วมกับการเจาะที่แหล่ง Perl แล้วเราจะทำในภายหลัง

Gisle Aas's "ภาพประกอบ perlgut" หรือที่เรียกว่า ความโง่เขลามีรูปภาพที่เป็นประโยชน์มาก:

<http://search.cpan.org/dist/illguts/>

· perlxstut และ perlxs

ความรู้ในการทำงานของการเขียนโปรแกรม XSUB นั้นมีประโยชน์อย่างเหลือเชื่อสำหรับการแฮ็กหลัก XSUBs
ใช้เทคนิคที่ดึงมาจากรหัส PP ส่วนของความกล้าที่ทำได้จริง
โปรแกรม Perl มันง่ายกว่ามากที่จะเรียนรู้เทคนิคเหล่านั้นจากตัวอย่างง่ายๆ และ
คำอธิบายมากกว่าจากแกนหลักเอง

· เพอลาพิ

เอกสารประกอบสำหรับ Perl API อธิบายการทำงานของฟังก์ชันภายในบางส่วน เช่น
รวมถึงมาโครจำนวนมากที่ใช้ในแหล่งที่มา

· ขนย้าย/pumpkin.pod

นี่คือชุดคำศัพท์สำหรับคนเฝ้าประตู Perl; บางอย่างก็มีประโยชน์
ถึงผู้ถือฟักทอง แต่ส่วนใหญ่ใช้กับทุกคนที่ต้องการไปเกี่ยวกับ Perl
พัฒนาการ

ซีแพน ผู้ทดสอบ AND PERL ผู้สูบบุหรี่


ผู้ทดสอบ CPAN ( http://testers.cpan.org/ ) คือกลุ่มอาสาสมัครที่ทำการทดสอบ CPAN
โมดูลบนแพลตฟอร์มที่หลากหลาย

ผู้สูบบุหรี่ Perl ( http://www.nntp.perl.org/group/perl.daily-build/ และ
http://www.nntp.perl.org/group/perl.daily-build.reports/ ) ทดสอบแหล่งที่มาของ Perl โดยอัตโนมัติ
เผยแพร่บนแพลตฟอร์มที่มีการกำหนดค่าต่างๆ

ความพยายามทั้งสองยินดีต้อนรับอาสาสมัคร เพื่อมีส่วนร่วมในการทดสอบควันของ perl
เยี่ยมชมตัวเองhttp://search.cpan.org/dist/Test-Smoke/>. เพื่อเริ่มการทดสอบควัน
เยี่ยมชมโมดูล CPANhttp://search.cpan.org/dist/CPANPLUS-YACSmoke/> หรือ
<http://search.cpan.org/dist/minismokebox/> หรือ
<http://search.cpan.org/dist/CPAN-Reporter/>.

WHAT ต่อไป?


หากคุณได้อ่านเอกสารทั้งหมดในเอกสารและรายการข้างต้นแล้ว แสดงว่าคุณ
มากกว่าพร้อมที่จะแฮ็ค Perl

มีคำแนะนำเพิ่มเติมดังนี้

· สมัครสมาชิก perl5-porters ทำตามแพตช์และพยายามทำความเข้าใจ ไม่ต้อง
กลัวถามว่ามีส่วนไม่ชัดเจนหรือเปล่า ใครจะรู้ คุณอาจค้นพบ
บั๊กในแพทช์...

· อ่าน README ที่เกี่ยวข้องกับระบบปฏิบัติการของคุณ เช่น README.aix บน IBM
ระบบปฏิบัติการ AIX อย่าลังเลที่จะจัดหาแพตช์ให้กับ README นั้นหากคุณพบว่ามีอะไรขาดหายไป
หรือเปลี่ยนจากระบบปฏิบัติการรุ่นใหม่

· ค้นหาพื้นที่ของ Perl ที่คุณสนใจและดูว่าคุณสามารถหาวิธีได้หรือไม่
ทำงาน สแกนต้นทางและข้ามผ่านในดีบักเกอร์ เล่น สะกิด
สอบสวน ซอ! คุณอาจจะได้ทำความเข้าใจไม่ใช่แค่พื้นที่ที่คุณเลือกแต่ a
ช่วงที่กว้างกว่ามากของ Perlกิจกรรมต่างๆ ด้วยเช่นกัน และอาจจะเร็วกว่าที่คุณคิด

" ถนน ไป เคย on และ หนึ่ง; ลง จาก ประตู ที่ไหน it เริ่ม."
หากคุณสามารถทำสิ่งเหล่านี้ได้ แสดงว่าคุณได้เริ่มต้นบนเส้นทางยาวสู่การย้ายพอร์ต Perl ขอบคุณสำหรับ
ต้องการช่วยให้ Perl ดีขึ้น - และแฮ็คอย่างมีความสุข!

อุปมา ใบเสนอราคา
หากคุณจำคำพูดเกี่ยวกับถนนข้างต้นได้แสดงว่าคุณโชคดี

โครงการซอฟต์แวร์ส่วนใหญ่เริ่มต้นแต่ละไฟล์ด้วยคำอธิบายตามตัวอักษรของวัตถุประสงค์ของแต่ละไฟล์
Perl เริ่มต้นด้วยการพาดพิงถึงวัตถุประสงค์ของไฟล์นั้น

เช่นเดียวกับบทต่างๆ ในหนังสือหลายเล่ม ไฟล์ต้นฉบับ Perl ระดับบนสุดทั้งหมด (รวมถึงส่วนอื่นๆ อีกสองสามไฟล์ที่นี่
และที่นั่น) เริ่มต้นด้วยจารึก epigrammatic ที่พาดพิงถึงโดยอ้อมและ
เปรียบเทียบเนื้อหาที่คุณกำลังอ่าน

ใบเสนอราคานำมาจากงานเขียนของ JRR Tolkien ที่เกี่ยวข้องกับ Legendarium ของเขาเกือบ
เสมอจาก การขอ เจ้า of แหวน. บทที่และหมายเลขหน้าจะได้รับโดยใช้
ฉบับต่อไปนี้:

· การขอ ฮอบบิท, โดย เจอาร์อาร์ โทลคีน. ปกแข็ง ฉบับครบรอบ 70 ปี 2007 คือ
ใช้เผยแพร่ในสหราชอาณาจักรโดย Harper Collins Publishers และในสหรัฐอเมริกาโดย Houghton
บริษัท มิฟฟลิน

· การขอ เจ้า of แหวน, โดย เจอาร์อาร์ โทลคีน. ปกแข็ง ฉบับครบรอบ 50 ปี
ค.ศ. 2004 ถูกใช้ จัดพิมพ์ในสหราชอาณาจักรโดย Harper Collins Publishers และในสหรัฐอเมริกาโดย the
บริษัท โฮตัน มิฟฟลิน

· การขอ วาง of เบอริอันด์, โดย JRR Tolkien และตีพิมพ์โดยลูกชายของเขาและ .ต้อ
ผู้ดำเนินการวรรณกรรม CJR Tolkien เป็นเล่มที่ 3 ใน 12 เล่มของคริสโตเฟอร์
มหึมา ประวัติขององค์กร of กลาง อีกครั้ง. เลขหน้ามาจากฉบับปกแข็ง
ตีพิมพ์ครั้งแรกในปี 1983 โดย George Allen & Unwin; ไม่มีการเปลี่ยนหมายเลขหน้าสำหรับ
ฉบับพิเศษ 3 เล่ม ประจำปี พ.ศ. 2002 หรือฉบับกระดาษทางการค้าต่างๆ ทั้งหมด
อีกครั้งโดย Harper Collins หรือ Houghton Mifflin

เกมอื่น ๆ ที่ยุติธรรมสำหรับหนังสือ JRRT สำหรับราคาจะรวมถึง การขอ การผจญภัย of ทอม บอมบาดิ,
การขอ ซิลมาริลเลียน, ยังไม่เสร็จ Talesและ การขอ นิทาน of เด็ก of ฮูริน, ทั้งหมดยกเว้น
ประกอบมรณกรรมครั้งแรกโดย CJRT แต่ การขอ เจ้า of แหวน ตัวเองก็สบายดี
และอาจเสนอราคาได้ดีที่สุดหากคุณสามารถหาใบเสนอราคาที่เหมาะสมได้ที่นั่น

ดังนั้น หากคุณต้องจัดหาไฟล์ต้นฉบับระดับบนสุดใหม่ที่สมบูรณ์เพื่อเพิ่มลงใน Perl คุณควร
ปฏิบัติตามการปฏิบัติที่แปลกประหลาดนี้ด้วยตัวเองโดยเลือกใบเสนอราคาที่เหมาะสมจาก
โทลคีน โดยคงตัวสะกดและเครื่องหมายวรรคตอนดั้งเดิมไว้และใช้รูปแบบเดียวกัน the
คำพูดที่เหลืออยู่ในนั้น ทางอ้อมและเฉียงก็ใช้ได้ จำไว้ว่ามันเป็นอุปมา
ดังนั้นการเป็นเมต้าจึงมีไว้เพื่ออะไร

ใช้ perlhack ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad




×
โฆษณา
❤️ช้อป จอง หรือซื้อที่นี่โดยไม่เสียค่าใช้จ่าย ช่วยให้บริการต่างๆ ฟรี