my $handle = new IO::File(">$file") or die "Can't open $file: $!"; # Or in 5.005 or later to avoid having to use IO::File # (doesn't seem to work in 5.004) my $handle = \do { local *FH }; open ($handle, ">$file") or die ..etc.