perlネットワークプログラミングという本に以下のようなコードが載っていて、

use IO::File;
$saveout = IO::File->new_from_fd(STDOUT, ">");
STDOUT->open('>log.txt');
STDOUT->print("Yippey yie yay!\n");
STDOUT->fdopen($saveout, ">");

実行すると、
Can't locate object method "open" via package "IO::Handle" (perhaps you forgot to load "IO::Handle"?) at test21.pl line 3.
というエラーがでてしまいます。
Linux+Perl5.6.1and 5.8.0,Windows98+activeperl5.6.1、別のPC上のLinux+Perl5.6.1など
いろいろ試したのですが全て同じ結果でした。

これはPerlとして正しい動作なのでしょうか?
本のサンプルコードでエラーがでるというのは気持ちが悪いのですが。。。