I think system() returns the exit status of the command ( i.e. $? ) -- so if your command executed properly, then it would most likely return a 0, which is a logical "false" for perl. So you need to warn when:
system( "$your_command" );
if( $? != 0 ) {
warn "something's wrong";
}
## or
## ( system( "$cmd" ) == 0 ) or warn "the sky is falling!";
##
I don't know about the illegal seek stuff, but I used to get a lot of that when I would have bogus errors ( i.e. my bug ) in the code. It's probably just that $! was never meant to be set when you checked for it ( however, I'm no expert on this subject, so please take that statement with a grain of salt )