my ($mode, $flags) = $command =~ /^(?:view|check)$/ ? (0644, O_RDONLY) : (0644, O_RDWR|O_CREAT); tie(%DB, "AnyDBMFile", $file, $flags, $mode); # so you want something like: use Fcntl; # this is where the O_RDWR O_CREAT O_RDONLY etc flags live tie(%DBAPACHE, "AnyDBM_File", $dbapache, 0644, O_RDWR|O_CREAT);