พฤศจิกายน 17, 2018, 12:40:40 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: copy ข้อความจากหน้าจอไป text file  (อ่าน 3041 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
TheONE
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 14


| |
« เมื่อ: ธันวาคม 18, 2010, 05:29:39 pm »

สวัสดีครับ ผมกำลังศึกษาการเขียน perl อยู่ ไปอ่านในเว็บเรื่องการเรียกใช้ external command ตอนนี้สามารถเรียกใช้งานได้แล้ว
แต่ผมอยากจะให้ output ของ external command ไปเก็บไว้ใน text file เพื่อให้โปรแกรมอื่นมาอ่านไปใช้ต่อ ไม่ทราบต้องทำอย่างไรครับ
ลองใช้
Code:
system("myexe.exe > out.txt")
และ
Code:
system("myexe.exe >> out.txt")

ข้อความบนจอไม่แสดง ผมเลยคิดว่ามัน redirect ไปได้แล้ว แต่ก็ไม่มีไฟล์ out.txt เกิดขึ้นครับ
รบกวนชี้แนะด้วยครับ  ::)
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #1 เมื่อ: ธันวาคม 18, 2010, 08:50:55 pm »

ผมจำได้อย่างลางเลือนว่า การ redirect ด้วย system หรือ exec ทำงานได้ใน Windows XP ลงไป หรือ Perl เวอร์ชั่นเก่าๆ หน่อย อันนี้ไม่ยืนยันครับ เพราะสิ่งที่ผมจำได้นี้ไม่รู้ว่าเป็น Perl หรืออย่างอื่น  :P

ผมขอแนะนำที่ได้ผลปน่นอนแล้วกันครับ นั่นคือการใช้ฟังก์ชัน Open บวกกับ redirect operator (|)  

Code:
my $comd = "myexe.exe arg1 arg2"; // สร้าง command-line,
// arg1, arg2 คือ arguments ที่ myexe.exe ต้องการ มีกี่ตัว หรือไม่มีขึ้นอยู่กับ myexe.exe
open(PS, "$comd |"); // สั่งรัน และ capture STDOUT (หน้าจอ) โดยใช้ PS เป็นการอ้างถึงข้อความ หรือ output ของ myexe.exe
open(FP, ">output.txt") or die("Cannot open file"); // สร้างไฟล์ใหม่เพื่อทำการ save ข้อมูลที่ capture มาได้

while( my $ln = <PS> ){ // วนลูปอ่าน
print FP "$ln"; // เขียนข้อมูลลงไฟล์ FP ในที่นี้คือ output.txt
}
close(PS); // ปิดไฟล์
close(FP);

มาถึงตอนนี้จะมี output.txt อยู่ลงเปิดดูจพเห็นสิ่งที่ต้องการ
** โปรแกรมไม่ได้ทดสอบนะครับ ถ้ามีปัญหาโปรดแจ้งให้ทราบด้วย ผมจะได้แก้ไขให้ถูกต้อง **
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: