A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> Permission denied
って文句たれてるんで、自分がそこには入れないディレクトリだったりしません?
お手数ですが、
・使っているOS
・実行時の操作
(シェルのコマンドラインから実行しているとか、cron経由で起動してるとか)
を説明してもらえますか?
> /ファイルパス/ 行番号 54.
まあ本当の名前そのまま書かないでもいいんですが、
この54行目でエラーになっているというファイルはどんなファイルですか?
自分で作った(File::Findを使っている)スクリプトのファイルですか?
それとも別の何かですか?
まず適当な作業ディレクトリに移って、
そこで3段くらいのディレクトリ構造と幾つかのダミーファイルを置いてみて、
シェルからスクリプトを実行して正しく動作するか確認してみてください。
ありがとうございます。
実行する形はCGIファイル(index.cgi)としてサーバーにアップしています。
ファイルアクセスして実行します。
また、エラーが発生する時はディレクトリのパスを通し、且つfind(\&wanted ~)を記入したときのみ発生していましたので、やはりアクセス権限などに関わるかと思われます。
しかし、ディレクトリに関してはこちらの所有でありパーミッションも777に設定したにもかかわらずエラーが発生しています。
もしかしたら僕が使用しているサーバーのPerlのバージョンがFile::Findに対応していないのかと、考えていますが
原因は不明でいます。
エラーに関しましてはindex.cgiファイル内の54行目で起こっていると記述されています。
しかし、54行目は特にディレクトリ探索に絡むようなスクリプトでは無いため、ただ単純に誤認と考えています。
--------------------------------------------
#-- ディレクトリを指定(複数の指定可能) --#
@directories_to_search = ('./');
#-- 実行 --#
find(\&wanted, @directories_to_search);
--------------------------------------------
懇切にアドバイスありがとうございました。
File::Findのエラーは解決できませんでしたが、別の方法を用いて
無事解決致しました。
ただ、このエラーは気になる所ではありますのでもう少し検討してみようと思います。
No.2
- 回答日時:
まあモジュール使うのがお手軽だと思うんですが、自前でやるなら
あるディレクトリのサイズ合計を求める手順を関数にし、
readdir でそのディレクトリに属するエントリを取得して
一つ一つチェックしていって、ファイルだったらサイズ加算
ディレクトリが見つかったらそこで自分自身を(見つかったディレクトリを引数にして)
呼び出すという感じですね。
ありがとうございます。
このページ(http://katsubemakito.net/cgiperl/directory/perl2 …)を参照し、File::Find;を使用したのですが、結果として『Can't cd to : Permission denied
Compilation failed in require at /ファイルパス/ 行番号 54.
』と表示されてしまいます。
find(\&wanted, @directories_to_search);と実行するとエラーが発生します。
エラー画面にディレクトリとファイル一覧が表示されていましたから、動作はしていると考えられますが、エラーの原因がわからずにいます・・・
No.1
- 回答日時:
1. 地道に再帰的に処理する
2. 地道に繰り返しで処理する
3. File::Find
回答ありがとうございます。
更に質問でもうしわけないのですが、どのようにして実現できるのでしょうか。
$dir = "test";
opendir(DIR, "$dir");
@ls = readdir(DIR);
closedir(DIR);
でディレクトリを@lsに格納し
foreach $line (@ls) {
$filesize = (-s $dir.'/'.$line);
$totalsize = $totalsize + $filesize;
}
でファイルの合計を出す。
if ($totalsize > $max) {
$caution = "ファイルサイズオーバーです。";
}
後は、前もって定めた容量を超えていたらメッセージを出す。
しかし、これだけでは$dirの階層しか読まれないため、
具体的にどのように組めばわからずにいます。
初心な質問ですみませんが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perl system関数 引数 フォルダ
-
データファイルをプロットする(...
-
[arduino]数値の大きなデータを...
-
VBAでCSVファイルを途中行まで...
-
VBAで巨大なファイルの途中から...
-
パスワードを外部ファイルから...
-
データの日付でソートをしたい
-
(Perl)UTF-8で別ファイルに書き...
-
fopenでディレクトリ内の全ファ...
-
エクセルVBAで素数だけを出力す...
-
マクロ構文エラー
-
サブスクリプトとのファイルハ...
-
重複するデータを抽出できる秀...
-
巨大ファイルの行をを逆順に並...
-
ファイルのアップロード
-
フォルダ内のファイルを全て開...
-
awk '{print $1}' file をもっ...
-
CGIがうまく動作しません。原因...
-
window.open でのファイル指定方法
-
vba dir の相対パス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
unlink 、renameが使えない理由
-
コマンドプロンプトからperlを...
-
perl初心者です。検索パスについて
-
perl system関数 引数 フォルダ
-
No.616076に続けて質問です
-
配列を使ってファイル名のリネーム
-
Perl で ディレクトリ及びサブ...
-
ディレクトリ名の変更
-
エラーログ「\\x8ew\\x92\\xe8...
-
エクセルVBA コードが同じでも...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
バッチファイルの作り方(CSV→...
-
batファイルでrenameができませ...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
close()で例外が投げられる理由
-
openした後、closeしないでプロ...
-
VBAで巨大なファイルの途中から...
-
vba dir の相対パス
おすすめ情報