
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl で ディレクトリ及びサブ...
-
Perl-CGI で排他制御はどうすれ...
-
ディレクトリ名の変更
-
エクセルVBA コードが同じでも...
-
VBAでCSVファイルを途中行まで...
-
MATLAB グローバル変数の宣言
-
一行だけ読込
-
perlのflock関数でロックをかけ...
-
batファイルでrenameができませ...
-
openした後、closeしないでプロ...
-
readdir()で得られるファイル・...
-
Windowsで複数のファイルを同じ...
-
C言語でのファイルのデータ更...
-
python renameについて
-
awkスクリプトでダブルクォーテ...
-
file_exists関数について
-
デルファイ TabControl タブの...
-
Excelのマクロで改行を含んだテ...
-
パスから最後のディレクトリだ...
-
C言語で特定の行を抽出する方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラーログ「\\x8ew\\x92\\xe8...
-
実行されない
-
perlのローカルプログラムでデ...
-
perl system関数 引数 フォルダ
-
readdir におけるフルパスでの...
-
Perl で ディレクトリ及びサブ...
-
ディレクトリ名の変更
-
perlからのexcel読み込み
-
perlのcdについて
-
コマンドプロンプトからperlを...
-
unlink 、renameが使えない理由
-
Perl-CGI で排他制御はどうすれ...
-
エクセルVBA コードが同じでも...
-
VBAでCSVファイルを途中行まで...
-
batファイルでrenameができませ...
-
MATLAB グローバル変数の宣言
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルの特定行を書...
-
awkスクリプトでダブルクォーテ...
-
window.open でのファイル指定方法
おすすめ情報