[問題] 如何抓stdout

看板Perl作者 (lpo)時間18年前 (2006/11/08 13:06), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/4 (看更多)
這是我從網路上學來的,但是似乎不一定管用, 只要是要當"前導程式"抓取一些程式列印出的畫面面, 好比說下面,可以執行dir命令,然後輸出到out,接著再讀取出來 $th = 0; open out,"dir |"; while (defined($line = <out>)) { print "[$th]$line\n"; $th++; } close(out); <> 問題是這樣不一定管用...很多程式會列印出的東西(部分部分的), 不是直接給你列印在螢幕,就是莫名其妙既沒有印在螢幕上, stdout也抓不到. 像我現在要抓mencoder的編碼資訊,就抓不到,我用 > 直接把資訊導到out.txt上, . . . Pos: 0.0s 1f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0] Pos: 0.0s 2f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0] Pos: 0.1s 3f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0] Pos: 0.1s 4f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0] Pos: 0.1s 5f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0] Pos: 0.1s 6f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0] . . . ...代表省略的意思,我需要的 Pos: 0.1s 5f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0] 資訊就是抓不到,有人可以跟我說該怎樣抓 "5f" 中的數值變數 (編碼到第幾張frame的編號), "0%" (進度) , "0.00fps" (編碼目前速度)嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.129.153.242

11/09 02:20, , 1F
Regular Expression 看看乎?
11/09 02:20, 1F

11/09 02:25, , 2F
是根本抓不到部分的STDOUT,抓到的話,比對我會處理,不過
11/09 02:25, 2F

11/09 02:26, , 3F
有人能直接說的話比較快,不然還要翻一下書
11/09 02:26, 3F

11/09 02:31, , 4F
抓不到的STDOUT,直接印到螢幕上,或是根本消失
11/09 02:31, 4F
文章代碼(AID): #15KMN9ys (Perl)
討論串 (同標題文章)
文章代碼(AID): #15KMN9ys (Perl)