This "clone" sizing causes the size of the slave to be varied according to its master - Expect.pm offers no other flavours of window resizing. I can't find an o/s-independent module that has more specific terminal sizing. The call to ioctl is the way the Expect module changes the size of slave to master, but because the IO module has been split up into separate sections, none of which are specifically "Terminal" I haven't yet had time to dig deeper than that (IO::Handle was a disappointment from this specific respect) - but that's where I would look next.