WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ファイル演算子を使いたい

0:[投稿] atusi [2002/11/04 00:12 ][環境:WIN+IE UNIX系+Perl]

あるディレクトリの中を調べて、
「あるファイル名以外は削除する」という処理を行いたいのですが、
ファイル演算子を使って下の内容と同じ内容を書く事って出来ますか?

# --------------------------------------------

# デイレクトリをオープン
opendir(DIR,"./tmp") || die("can't open ./tmp");
my @files = readdir(DIR);

# 実際の処理
foreach(@files)
{

    # ic_1.gif は削除しない
    if(/ic_1.gif/)
    {
        next;
    }
    # ic_2.gif は削除しない
    elsif (/ic_2.gif/)
    {
        next;
    }
    # それ以外で、ic_で始まるgifファイルがあれば削除
    elsif(/ic_(.*)\.gif/)
    {
        my $unlinked = "./tmp/ic_";
        $unlinked .= "$1";
        $unlinked .= '.gif';
        unlink $unlinked;
        print "$unlinked\n";
    }
}
closedir(DIR);


1:[回答] andi [2002/11/04 01:14 ]

opendir(DIR,"./tmp") || die("can't open ./tmp");
unlink(grep(s!^(ic_[^12]*\.gif)$!tmp/$1!,readdir(DIR)));
closedir(DIR);

こんな感じでも出来るかも。
試していないので試験はして下さいね。


2:[回答] B-Cus [2002/11/04 01:44 ]

> ファイル演算子を使って下の内容と同じ内容を書く事って出来ますか?

ファイル演算子って、ファイルテスト演算子 (-x とか -f とか) のことですか?

もしそうだとして、ファイルテスト演算子を使うメリットが見当たらないのですが、
なぜファイルテスト演算子を使おうと考えたのですか?


3:[質問] atusi [2002/11/04 09:11 ]

皆様ご返信ありがとうございます。

> ファイル演算子って、ファイルテスト演算子 (-x とか -f とか) のことですか?
ファイルテスト演算子のことです。すいません。

当初、
「ic_ で始まるファイルが存在すればそれを削除」
と頭で考えており、これはファイルテスト演算子の考え方ではないだろうか、
と漠然とではありますが自分の中で思ったからです。

加えて、自分では
if(-f ic_*.gif)
{
#処理
}

という具合に書けば動くのではないかと思ったにも
関わらず、実際は動きませんでした。

といった経緯なのです。

ご迷惑をおかけしますが、何卒アドバイスをお願いいたします。



4:[回答] B-Cus [2002/11/04 12:13 ]

> if(-f ic_*.gif)

という書き方はできません。ファイルテスト演算子を使う場合は、
正確なファイル名をあらかじめ知っておく必要があります。

ファイル名をあらかじめ知っておくには readdir すればよい
ですが、readdir が返してきたファイル名に対して -f を使うと
当然「存在する」という結果が得られます。

よって、ここではファイルテスト演算子を使うメリットがありません。


5:[完了] atusi [2002/11/05 02:20 ]

やはり使えないのですね。
使えれば便利だとは思ったのですが。

勉強になります。
ご指導、どうもありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World