1

フォルダ内の IP アドレスが「1.1.1.1」のファイルを削除したい/tmp:

# ls -1 /tmp
1.1.1.1_Reboot.xml
1.1.1.1_Roll.xml
1.1.1.1_Setup.xml
1.1.1.2_Reboot.xml
1.1.1.2_Roll.xml
1.1.1.2_Setup.xml

私が言及している:リンク解除グロブ

これが私のコードです:

#!/usr/bin/perl -w
use strict;

my $DIR     = "/tmp";
my $IP      = '1.1.1.1';

unlink glob $DIR."/".$IP."*";

ただし、ファイルは削除されません。私の疑いはglob機能にあり、正しい方法で使用していないと思います。

手伝ってくれる。ありがとう。

アップデート:

$IPIPアドレス自体に置き換えると、ファイルが削除されます。

unlink glob $DIR."/"."1.1.1.1"."*";

そのため、unlinkステートメントは variable の値を評価できないようです$IP。なぜこのように振る舞うかはわかりません。$IP明示的な値ではなく、動作させる必要があります。

4

1 に答える 1

0

パスに戻る場合があります。エラーを印刷して詳細情報を取得します。これを試して:

#!/usr/bin/perl -w
use strict;

my $DIR     = "/tmp";
my $IP      = '1.1.1.1';

chdir $DIR;
my @goners  = glob $IP . "*";

foreach my $file ( @goners ) {
   print "file: $file\n";
   next unless $file =~ m!^1\.1\.1\.\d_!;
   print "file to delete: $file\n";
   unlink $file or warn "Could not unlink $file: $!";
}
于 2013-03-18T08:00:27.413 に答える