アプリ版:「スタンプのみでお礼する」機能のリリースについて

Linuxで perl5.005_03 + AnyDBM_FileでDBを作ろうとしているのですが、
作成された DBのファイルパーミッションが「0644」になってしまいます。

「0444」だと意味はありませんが正しく設定されます。
「0777」だと「0744」になりました。

以下のようにやっているのですが、何が間違えているのでしょう。
それとも操作に関しての権限が「0666」になるだけで、実際のファイル
パーミッションは後から変更しないといけないのでしょうか?

----------------------------------
use Fcntl;
use Config;
use AnyDBM_File;

$flags = O_CREAT | O_RDWR | &BINARY;
tie( %HASH, AnyDBM_File, dbmfile, $flags,0666 ) || die "Can't open DB\n";
~処理~
untie( %HASH );

sub BINARY{ return O_BINARY if $Config{osname} =~ /^(MS)?Win/; }

A 回答 (1件)

umask 033されているような気がします。

シェルのプロンプト上で「umask」を実行すると何が表示されますか?
「033」と表示されたのであればperlスクリプトの問題の箇所の前で「umask( 000 );」としてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。さっそくumaskしてみると結果は「022」でした。

>$umask_old = umask;
>umask(000);
>tie ~;
>umask( $umask_old );

で成功しました!

お礼日時:2001/04/04 10:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!