看板 Perl 關於我們 聯絡資訊
這是我從網路上學來的,但是似乎不一定管用, 只要是要當"前導程式"抓取一些程式列印出的畫面面, 好比說下面,可以執行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
LiloHuang:Regular Expression 看看乎? 11/09 02:20
erspicu:是根本抓不到部分的STDOUT,抓到的話,比對我會處理,不過 11/09 02:25
erspicu:有人能直接說的話比較快,不然還要翻一下書 11/09 02:26
erspicu:抓不到的STDOUT,直接印到螢幕上,或是根本消失 11/09 02:31