คำถามติดแท็ก perl

Perl เป็นภาษาโปรแกรมเชิงพลวัตขั้นสูงและมีวัตถุประสงค์ทั่วไปซึ่งเป็นที่รู้จักกันดีในเรื่องการสนับสนุนการแสดงออกปกติและความสามารถในการวิเคราะห์สตริง โปรดใช้แท็กนี้สำหรับคำถามเกี่ยวกับ Perl โดยทั่วไป สำหรับสิ่งต่าง ๆ ที่เกี่ยวข้องกับภาษาใหม่ (แต่เกี่ยวข้อง) Raku (เดิมชื่อ "Perl 6") โปรดใช้แท็ก raku สำหรับนิพจน์ทั่วไปสไตล์ Perl ในภาษาอื่น ๆ ให้ใช้แท็ก regex หรือหากเป็นไปตามไลบรารี PCRE แท็ก pcre

6
ความแตกต่างระหว่าง Perl และ PHP [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันวางแผนที่จะเรียนรู้ Perl 5 และเนื่องจากฉันใช้ PHP เพียงอย่างเดียวจนถึงตอนนี้ฉันจึงอยากรู้ว่าภาษาต่างกันอย่างไร เมื่อ PHP เริ่มต้นจากชุด "Perl hacks" เห็นได้ชัดว่ามีการโคลนคุณลักษณะบางอย่างของ Perls อะไรคือความแตกต่างหลักในไวยากรณ์? เป็นความจริงหรือไม่ที่ Perl คุณมีทางเลือกและวิธีการแสดงออกมากขึ้น? เหตุใด Perl จึงไม่ใช้กับเว็บไซต์แบบไดนามิกบ่อยนักอีกต่อไป อะไรทำให้ PHP ได้รับความนิยมมากขึ้น?
101 php  perl 

8
ฉันจะแก้ปัญหาสคริปต์ Perl CGI ของฉันได้อย่างไร
ฉันมีสคริปต์ Perl ที่ใช้งานไม่ได้และฉันไม่รู้ว่าจะเริ่ม จำกัด ปัญหาได้อย่างไร ฉันจะทำอะไรได้บ้าง? หมายเหตุ: ฉันกำลังเพิ่มคำถามเพราะฉันต้องการเพิ่มคำตอบที่ยาวมากใน Stackoverflow ฉันเชื่อมโยงกับภายนอกในคำตอบอื่น ๆ และสมควรที่จะอยู่ที่นี่ อย่าอายที่จะแก้ไขคำตอบของฉันหากคุณมีสิ่งที่จะเพิ่ม
100 perl  cgi 

8
วิธีคาดเดาการเข้ารหัสระหว่าง MacRoman, CP1252, Latin1, UTF-8 และ ASCII ได้อย่างน่าเชื่อถือ
ในที่ทำงานดูเหมือนว่าจะไม่มีสัปดาห์ใดผ่านไปโดยไม่มีการเชื่อมต่อที่เกี่ยวข้องกับการเข้ารหัสภัยพิบัติหรือหายนะ ปัญหามักเกิดจากโปรแกรมเมอร์ที่คิดว่าสามารถประมวลผลไฟล์ "ข้อความ" ได้อย่างน่าเชื่อถือโดยไม่ต้องระบุการเข้ารหัส แต่คุณทำไม่ได้ ดังนั้นจึงมีการตัดสินใจที่จะห้ามไม่ให้ไฟล์มีชื่อที่ลงท้ายด้วย*.txtหรือ*.text. แนวคิดก็คือส่วนขยายเหล่านั้นทำให้โปรแกรมเมอร์ทั่วไปเข้าใจผิดว่าเป็นความพึงพอใจที่น่าเบื่อเกี่ยวกับการเข้ารหัสและสิ่งนี้นำไปสู่การจัดการที่ไม่เหมาะสม เกือบจะดีกว่าที่จะไม่มีส่วนขยายเลยเพราะอย่างน้อยคุณก็รู้ว่าคุณไม่รู้ว่าคุณมีอะไรบ้าง อย่างไรก็ตามเราจะไม่ไปไกลขนาดนั้น คุณจะต้องใช้ชื่อไฟล์ที่ลงท้ายด้วยการเข้ารหัสแทน ดังนั้นสำหรับไฟล์ข้อความเช่นเหล่านี้จะเป็นสิ่งที่ชอบREADME.ascii, README.latin1, README.utf8ฯลฯ สำหรับไฟล์ที่ต้องการนามสกุลเฉพาะหากสามารถระบุการเข้ารหัสภายในไฟล์ได้เช่นใน Perl หรือ Python คุณจะต้องทำเช่นนั้น สำหรับไฟล์เช่นซอร์ส Java ที่ไม่มีสิ่งอำนวยความสะดวกดังกล่าวอยู่ภายในไฟล์คุณจะต้องใส่การเข้ารหัสก่อนนามสกุลเช่นSomeClass-utf8.java. สำหรับเอาต์พุต UTF-8 เป็นที่ต้องการอย่างยิ่ง แต่สำหรับการป้อนข้อมูลที่เราจำเป็นต้องคิดหาวิธีที่จะจัดการกับพันไฟล์ใน codebase *.txtของเราชื่อ เราต้องการเปลี่ยนชื่อทั้งหมดให้เข้ากับมาตรฐานใหม่ของเรา แต่เราไม่สามารถมองเห็นพวกมันได้ทั้งหมด ดังนั้นเราจึงต้องการไลบรารีหรือโปรแกรมที่ใช้งานได้จริง สิ่งเหล่านี้มีหลากหลายใน ASCII, ISO-8859-1, UTF-8, Microsoft CP1252 หรือ Apple MacRoman แม้ว่าเราจะรู้ว่าเราสามารถบอกได้ว่ามีบางอย่างเป็น ASCII หรือไม่และเรามีการเปลี่ยนแปลงที่ดีในการรู้ว่าบางสิ่งอาจเป็น UTF-8 หรือไม่ แต่เราก็นิ่งงันเกี่ยวกับการเข้ารหัส 8 บิต เนื่องจากเราทำงานในสภาพแวดล้อม Unix แบบผสม …

11
grep -P ไม่ทำงานอีกต่อไป ฉันจะเขียนการค้นหาของฉันใหม่ได้อย่างไร
ดูเหมือนว่า OSX เวอร์ชันใหม่จะไม่รองรับอีกต่อไปgrep -Pและทำให้สคริปต์บางส่วนของฉันหยุดทำงาน var1=`grep -o -P '(?<=<st:italic>).*(?=</italic>)' file.txt` ฉันต้องการจับ grep เป็นตัวแปรและฉันต้องใช้การยืนยันความกว้างเป็นศูนย์เช่นเดียวกับ \K var2=`grep -P -o '(property:)\K.*\d+(?=end)' file.txt` ทางเลือกอื่น ๆ จะได้รับการชื่นชมอย่างมาก
99 macos  perl  shell 

11
ฉันควรใช้ Perl เวอร์ชันใดบน Windows [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ win32.perl.orgเว็บไซต์ให้อ้างอิงถึงการกระจาย Perl หลาย MS Windows เป็นเวลานานฉันได้ใช้ ActivePerl จาก ActiveStateแต่เมื่อเร็ว ๆ นี้ผมเปลี่ยน สตรอเบอร์รี่ Perl IMHO ข้อได้เปรียบเพียงอย่างเดียวที่ Active Perl ยังคงมีอยู่เหนือ Strawberry Perl คือความจริงที่ว่ามันมาพร้อมกับ Perl Tk ซึ่งหมายความว่ามันง่ายต่อการติดตั้ง Devel :: ptkdbตัวแก้ไขจุดบกพร่องแบบกราฟิก นอกเหนือจากนั้นฉันคิดว่า Strawberry Perl มีข้อดีทั้งหมด

11
วิธีง่ายๆในการพิมพ์ Perl array? (ด้วยการจัดรูปแบบเล็กน้อย)
มีวิธีง่ายๆในการพิมพ์อาร์เรย์ Perl โดยใช้เครื่องหมายจุลภาคระหว่างแต่ละองค์ประกอบหรือไม่? การเขียน for loop นั้นทำได้ค่อนข้างง่าย แต่ไม่สวยหรูนัก .... ถ้าเป็นเช่นนั้น
98 perl 

6
วิธีที่เหมาะสมในการตรวจสอบว่าสตริงว่างเปล่าใน Perl คืออะไร?
ฉันเพิ่งใช้รหัสนี้เพื่อตรวจสอบว่าสตริงว่างเปล่า: if ($str == "") { // ... } และเช่นเดียวกันกับตัวดำเนินการ not equals ... if ($str != "") { // ... } ดูเหมือนจะได้ผล (ฉันคิดว่า) แต่ฉันไม่แน่ใจว่าเป็นวิธีที่ถูกต้องหรือมีข้อบกพร่องที่ไม่คาดคิด มีบางอย่างไม่ถูกต้องเกี่ยวกับมัน

8
การพิมพ์ของ Perl จะเพิ่มขึ้นบรรทัดใหม่ตามค่าเริ่มต้นได้อย่างไร
ใน Perl ข้อความส่วนใหญ่ของฉันprintอยู่ในรูปแบบ print "hello." . "\n"; มีวิธีที่ดีในการหลีกเลี่ยงการโกหก "\ n" ที่น่ารำคาญหรือไม่? ฉันรู้ว่าฉันสามารถสร้างฟังก์ชันใหม่เช่นmyprintที่ต่อท้ายโดยอัตโนมัติ \ n แต่จะดีถ้าฉันสามารถแทนที่ไฟล์print.
96 perl  printing  newline 

6
วิธีที่ดีที่สุดในการวนซ้ำผ่านอาร์เรย์ Perl
การใช้งานแบบใดที่ดีที่สุด (ในแง่ของความเร็วและการใช้หน่วยความจำ) สำหรับการทำซ้ำผ่านอาร์เรย์ Perl มีวิธีไหนที่ดีกว่านี้ไหม? (@Arrayไม่จำเป็นต้องเก็บรักษาไว้) การนำไปใช้ 1 foreach (@Array) { SubRoutine($_); } การนำไปใช้งาน 2 while($Element=shift(@Array)) { SubRoutine($Element); } การนำไปใช้ 3 while(scalar(@Array) !=0) { $Element=shift(@Array); SubRoutine($Element); } การนำไปใช้งาน 4 for my $i (0 .. $#Array) { SubRoutine($Array[$i]); } การนำไปใช้ 5 map { SubRoutine($_) } @Array ;
96 arrays  perl  iteration 

4
ฉันจะรวมแฮชใน Perl ได้อย่างไร?
วิธีใดดีที่สุดในการรวมแฮชทั้งสองเป็น% hash1 ฉันรู้เสมอว่า% hash2 และ% hash1 มีคีย์ที่ไม่ซ้ำกันเสมอ ฉันต้องการโค้ดบรรทัดเดียวถ้าเป็นไปได้ $hash1{'1'} = 'red'; $hash1{'2'} = 'blue'; $hash2{'3'} = 'green'; $hash2{'4'} = 'yellow';
95 perl  dictionary  hash  merge 

7
Python เทียบเท่ากับกล่อง Bundler / Perl ของ Ruby คืออะไร?
ฉันรู้เกี่ยวกับ Virtualenv และ pip แต่สิ่งเหล่านี้แตกต่างจาก Bundler / carton เล็กน้อย ตัวอย่างเช่น: pip เขียนพา ธ สัมบูรณ์ไปยัง shebang หรือเปิดใช้งานสคริปต์ pip ไม่มีexecคำสั่งย่อย ( bundle exec bar) Virtualenv คัดลอก Python interpreter ไปยัง Local Directory นักพัฒนา Python ทุกคนใช้ Virtualenv / pip หรือไม่? มีเครื่องมือจัดการแพ็คเกจอื่น ๆ สำหรับ Python หรือไม่?
94 python  ruby  perl  virtualenv  pip 

12
ฉันจะแสดงสคริปต์โดยพลการใน unix ได้อย่างไร
ฉันต้องการ daemonizer ที่สามารถเปิดโดยพลสคริปต์ทั่วไปหรือสั่งเข้ามาเป็นภูต มีสองกรณีทั่วไปที่ฉันต้องการจัดการ: ฉันมีสคริปต์ที่ควรรันตลอดไป หากเคยตาย (หรือรีบูต) ให้รีสตาร์ท อย่าปล่อยให้สำเนาสองชุดทำงานพร้อมกัน (ตรวจสอบว่าสำเนาทำงานอยู่แล้วและไม่เปิดใช้ในกรณีนั้น) ฉันมีสคริปต์หรือคำสั่งบรรทัดคำสั่งง่ายๆที่ฉันต้องการดำเนินการซ้ำ ๆ ตลอดไป (โดยหยุดชั่วคราวระหว่างการรัน) อีกครั้งอย่าปล่อยให้สคริปต์สองสำเนาทำงานพร้อมกัน แน่นอนว่ามันเป็นเรื่องเล็กน้อยที่จะเขียน "while (true)" วนรอบสคริปต์ในกรณีที่ 2 จากนั้นใช้โซลูชันสำหรับกรณีที่ 1 แต่วิธีแก้ปัญหาทั่วไปจะแก้ปัญหากรณีที่ 2 โดยตรงเนื่องจากใช้กับสคริปต์ในกรณีที่ 1 เป็น ดี (คุณอาจต้องการหยุดชั่วคราวให้สั้นลงหรือไม่มีเลยหากสคริปต์ไม่ได้ตั้งใจที่จะตาย (แน่นอนว่าถ้าสคริปต์ไม่มีวันตายจริงๆการหยุดชั่วคราวก็ไม่สำคัญ)) โปรดทราบว่าโซลูชันไม่ควรเกี่ยวข้องกับการเพิ่มรหัสล็อกไฟล์หรือการบันทึก PID ลงในสคริปต์ที่มีอยู่ โดยเฉพาะอย่างยิ่งฉันต้องการโปรแกรม "daemonize" ที่สามารถเรียกใช้งานได้ % daemonize myscript arg1 arg2 หรือตัวอย่างเช่น % daemonize 'echo `date` >> /tmp/times.txt' ซึ่งจะทำให้รายการวันที่เพิ่มขึ้นต่อท้าย times.txt …

3
ฉันจะใช้คีย์เวิร์ด“ ของฉัน” ใน Perl ได้อย่างไร
ฉันมักจะเห็นคีย์เวิร์ด "ของฉัน" หน้าชื่อตัวแปรในตัวอย่างสคริปต์ Perl ออนไลน์ แต่ฉันไม่รู้ว่ามันหมายถึงอะไร ฉันพยายามอ่านหน้าคู่มือและเว็บไซต์อื่น ๆ ทางออนไลน์ แต่ฉันมีปัญหาในการแยกแยะว่ามันคืออะไรเนื่องจากความแตกต่างระหว่างวิธีที่ฉันเห็นและคู่มือ ตัวอย่างเช่นใช้เพื่อรับความยาวของอาร์เรย์ในโพสต์นี้: ค้นหาขนาดของอาร์เรย์ใน Perl แต่คู่มือบอกว่า: A ของฉันประกาศตัวแปรที่แสดงรายการเป็นโลคัล (ศัพท์) ไปยังบล็อกไฟล์หรือ eval หากมีมากกว่าหนึ่งค่ารายการจะต้องอยู่ในวงเล็บ มันทำอะไรและใช้อย่างไร?


8
วิธีการแยกสตริงตามรูปแบบด้วย grep, regex หรือ perl
ฉันมีไฟล์ที่มีลักษณะดังนี้: <table name="content_analyzer" primary-key="id"> <type="global" /> </table> <table name="content_analyzer2" primary-key="id"> <type="global" /> </table> <table name="content_analyzer_items" primary-key="id"> <type="global" /> </table> ฉันต้องการที่จะดึงอะไรที่อยู่ในคำพูดที่ว่าต่อไปนี้name=คือcontent_analyzer, และcontent_analyzer2content_analyzer_items ฉันกำลังทำสิ่งนี้บนกล่อง Linux ดังนั้นวิธีแก้ปัญหาโดยใช้ sed, perl, grep หรือ bash ก็ใช้ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.