こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

NET::SFTP::FOREIGNについて

NET……FOREIGNを使って、ファイルのパーミッション(アクセス権)を変えようと試みましたが、変えられませんでした。
いや、変更は可能なのですが、意図したパーミッションになりません。
例えば、0755とすると、0363となります。
Perlのフォームデータから755と送られてきたときに正常に変更させるにはどうしたらいいですか?
ちなみに、直接数値でなら正常に変更できます。

簡略しますが……
<input type="text" name="chmod" value="任意の数値">
このデータを受け渡し……

sftp->chmod("ファイル名", $FORM{'chmod'});
とすると、例えば任意の数値が0755だと、0363となり、うまく変更できません。
なにが原因かわかる方いらっしゃいますかね?

投稿日時 - 2019-09-09 16:28:32

QNo.9655023

困ってます

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

sftp->chmod("ファイル名", 493);
で0755になるようなら、さっきの8進数が10進数で認識されている。
と思ってよいかと。
493(10)は0755(8)なので。

投稿日時 - 2019-09-09 18:51:02

お礼

受け取ったデータの先頭に0つけて10進数にしたら解決しました。
ありがとうございます。

投稿日時 - 2019-09-09 20:31:57

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

その言語を触ったことがないのですが。
進数問題と思われます。

"0755"は値として0755(8)なんですが。
755(10)だと、1363(8)になるので、この363が突破口に感じます。
だとすれば推測として、先頭の"0"がわたっていない可能性がありそうです。
超適当な回答になりますが、
これの、先頭に"0"を付けたらどうなりますか?
(数字の0ではなく、文字の0)
"0" + $FORM{'chmod'}
この言語をわかっていませんが、何となく$FORMがINTと処理され
先頭の0がなくなっているのではないか?と
想像はしましたが、どうでしょうか?

投稿日時 - 2019-09-09 18:47:30

補足

文字のOですと、変更すら起きません。

投稿日時 - 2019-09-09 19:17:09

あなたにオススメの質問