• ベストアンサー
  • 困ってます

NET::SFTP::FOREIGNについて

  • 質問No.9655023
  • 閲覧数29
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 11% (9/78)

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

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

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

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

  • 回答No.2
  • ベストアンサー

ベストアンサー率 50% (1325/2617)

[技術者向] コンピューター カテゴリマスター
sftp->chmod("ファイル名", 493);
で0755になるようなら、さっきの8進数が10進数で認識されている。
と思ってよいかと。
493(10)は0755(8)なので。
お礼コメント
humu01jp

お礼率 11% (9/78)

受け取ったデータの先頭に0つけて10進数にしたら解決しました。
ありがとうございます。
投稿日時:2019/09/09 20:31

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 50% (1325/2617)

[技術者向] コンピューター カテゴリマスター
その言語を触ったことがないのですが。
進数問題と思われます。

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

お礼率 11% (9/78)

文字のOですと、変更すら起きません。
投稿日時:2019/09/09 19:17
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ