• ベストアンサー

O_CREAT が効かない

my$file='test.dat'; sysopen(FH, $file, O_WRONLY|O_TRUNC|O_CREAT) || die $!; test.datが無い場合は作成されるはずですが作成されません。 サーバーの設定が原因でしょうか。 ご存知の方がいらっしゃいましたらご指摘をお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

use Fcntl してますか? The possible values and flag bits of the MODE parameter are system-dependent; they are available via the standard module "Fcntl". See the documentation of your operating system's "open" to see which values and flag bits are available. You may combine several flags using the "|"-operator. -- ここまで sysopenのドキュメントから You can request that the old constants (FAPPEND, FASYNC, FCREAT, FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for compatibility reasons by using the tag ":Fcompat". For new applications the newer versions of these constants are suggested (O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK, O_SYNC, O_TRUNC). -- ここまで Fcntl.pm のドキュメントから。

nerumako
質問者

お礼

良く確認したらuse Fcntl しておりませんでした! 付け忘れてました。 どうもありがとうございます。 いやはやお恥ずかしい限り。 大変失礼いたしました。

nerumako
質問者

補足

use Fcntl しております。 謎です。。

その他の回答 (1)

  • t-sazen
  • ベストアンサー率42% (37/87)
回答No.1

ディレクトリのパーミッションはどうなっていますか? 普通であれば、 sysopen(FH, $file, O_WRONLY|O_TRUNC|O_CREAT, 0600) || die $!; で動作すると思うのですが・・・

nerumako
質問者

お礼

use Fcntl 記述忘れでした。 ご回答頂きましてありがとうございました。 当方の単純なミスでお手間を取らせてしまい 誠に申し訳ございませんでした。