in reply to Inappropriate ioctl for device

You're checking $! even if there was no error!

Check out open and perlvar. From perlvar:

if (open(FH, $filename)) { # Here $! is meaningless. ... } else { # ONLY here is $! meaningful. ... # Already here $! might be meaningless. }

Liz