-2

perlスクリプトを使用してファイルとフォルダーを削除しようとしています。「rm-rf$file」コマンドを使用してファイルを削除していますが、何も実行されていません。ただし、cmd行で同じコマンドを試してみると、正常に機能し、ファイルが削除されます。添付されているのはコードスニペットです。どんな助けでも大歓迎です。

for each $f (@files)
{
       system "rm -rf $f";
}

私はこれをいくつかのマシンで試しましたが、同じ問題がありました。ただし、mkdir、tarなどの他のシステムコマンドを使用してみましたが、問題なく動作します。リンクを解除しようとしましたが、同じ問題が解決しません。

4

3 に答える 3

4

forまたはを使用できますforeachが、はありませんfor each。コードを実行しました。これを修正すると、ファイルが削除されました。

use strict;'each'は裸の単語として表示されるため、を使用するとこれが見つかります。

これが私が使用したコードです:

#!/usr/bin/perl

use warnings;
use strict;

my @files = qw( a.txt b.txt c.txt );

for my $f (@files)
{
   system "rm -rf $f";
}

これにより、、、が正常に削除されたためa.txt、コードが機能していることを保証します。b.txtc.txt

perlデバッガーを使用して@filesを検査し、削除しようとしているすべてのファイルのアクセス許可を確認します。

于 2012-04-19T03:08:54.113 に答える
2
use File::Path;
rmtree('folder_path');  #rmtree('/tmp/test');
于 2013-05-30T09:07:13.063 に答える
0

@filesアレイにファイルのみがあり、フォルダーがない場合は、ファイルunlinkを削除するコマンドを使用することもできます。これはおそらく を使用するよりも安全ですrm -rf。要素/が何らかの形で配列に入ると、Linux が壊れてしまう可能性がありますrm -rfperldoc でリンクを解除します。

unlink @files;
于 2012-04-19T08:42:45.183 に答える