เพื่อนของฉันชี้ให้เห็นว่าถ้าคุณ:
perl -pi.bak -e 's/foo/bar/' somefile
เมื่อ "somefile" เป็น symlink จริง Perl จะทำตามที่เอกสารบอกว่าจะทำ:
ทำได้โดยเปลี่ยนชื่อไฟล์อินพุตเปิดไฟล์เอาต์พุตโดยใช้ชื่อดั้งเดิมและเลือกไฟล์เอาต์พุตนั้นเป็นค่าเริ่มต้นสำหรับคำสั่ง print () ส่วนขยายหากให้มาจะใช้ในการแก้ไขชื่อของไฟล์เก่าเพื่อทำสำเนาสำรอง [... ]
ซึ่งส่งผลให้ symlink ใหม่ "somefile.bak" ชี้ไปที่ไฟล์จริงที่ไม่เปลี่ยนแปลงและไฟล์ใหม่ "somefile" ที่มีการเปลี่ยนแปลงปกติพร้อมการเปลี่ยนแปลง
ในหลายกรณีการติดตาม symlink จะเป็นพฤติกรรมที่ต้องการ (แม้ว่าจะออกจากตำแหน่งที่ถูกต้องของไฟล์. bak ที่ไม่ชัดเจน) มีวิธีง่ายๆในการทำเช่นนี้นอกเหนือจากการทดสอบ symlink ใน wrapper และการจัดการกรณีอย่างเหมาะสมหรือไม่?
( sed
ทำสิ่งเดียวกันเพื่อสิ่งที่คุ้มค่า)
-p -i
สคริปต์ของคุณไปใช้ใหม่