2014-01-15 249 views
0

當我在Linux操作系統Term::Size::Anychars)和Term::ReadKeyGetTerminalSize)上調用此腳本時,總是返回相同數量的列。在MSWin32操作系統上的條款:: ReadKey :: GetTermialSize操作系統

當我在Windows機器上調用腳本時,只要用鼠標將鼠標調整爲較小的大小,返回的列數就會不同。 chars返回新的寬度,而GetTerminalSize返回初始終端寬度。

GetTerminalSize得到新的調整後的終端寬度有一個竅門嗎?

use strict; 
use warnings; 
use 5.10.0; 

use Term::Size::Any qw(chars); 
use Term::ReadKey qw(GetTerminalSize); 


say((chars(\*STDOUT))[0]); 
say((GetTerminalSize(\*STDOUT))[0]); 
+0

你調整大小和得到一個滾動條,或通過屬性實際改變窗口的大小,它們是不一樣的「東西」 – nrathaus

+0

我如何調整終端的大小:我將鼠標移動到控制檯的右下角,然後按下鼠標左鍵然後我將鼠標移到左邊 - 同時按住鼠標左鍵。 –

回答

1

您目前所做的並不是所謂的「調整大小」,終端屏幕大小仍然相同,您只是減少終端可見大小。

改變窗口終端「大小」,單擊左上角,轉到屬性更改「屏幕緩衝區大小」,此刻的你只是改變了「窗口大小」

+0

我只對可見部分感興趣(不滾動)。 'Term :: Size :: Any'在寫一些可移植的東西時可以滿足我的需求。但有時我必須加載'Term :: ReadKey',然後我可以使用'GetTerminalSize'。 –