รับข้อยกเว้นจาก IO::File?

โมดูล IO::File, IO::Socket::INET มีข้อดีบางประการมากกว่าการใช้ฟังก์ชัน IO ในตัวของ Perl โดยตรง เช่น การมีไวยากรณ์ที่ชัดเจนเพื่อล้างหมายเลขอ้างอิง

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

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

ฉันกำลังเขียนโค้ดโมดูล และตามหลักการแล้ว โซลูชันควรใช้งานได้ตั้งแต่ Perl 5.10.0 เป็นต้นไป


person John Dough    schedule 19.12.2013    source แหล่งที่มา
comment
โปรดทราบว่าตัวจัดการไฟล์นั้น/มีวัตถุ IO::File อยู่แล้ว (เนื่องจาก Perl ที่ทันสมัยเพียงพอ และอาจเป็น use IO::File เพื่อโหลดวิธีการ) ดังนั้นคุณจึงสามารถใช้บิวด์อินเช่น open ได้โดยไม่ต้องละทิ้งคุณสมบัติ OOP   -  person amon    schedule 20.12.2013


คำตอบ (1)


คุณเคยดู Path::Tiny แล้วหรือยัง? ไวยากรณ์แตกต่างออกไป แต่มีข้อยกเว้นเกิดขึ้น

E.G.

use Path::Tiny;
path('/non/existent/file')->openr;

จะตายด้วยวัตถุ Path::Tiny::Exception (สมมติว่าคุณไม่มีไฟล์ดังกล่าว)

person Thomas Erskine    schedule 17.01.2014