9.4 同じファイルに2つの名前が与えられていないか確認する

リスト内の2つのファイル名がディスク上の同じファイルに対応していないかどうか確認したい(ハードリンク、ソフトリンクにより、2つのファイル名が1つのファイルを参照している場合がある)。

  • ハッシュを作成し、キーとしてファイルのデバイス番号とiノード番号を値としてファイルの名前を格納していく。
%seen = ();

sub do_my_thing {
  my $filename = shift;
  my ($dev, $ino) = stat $filename;

 unless ($seen{$dev, $ino}++) {
    # 未処理ファイル($filename)に対する任意の処理を書く
  }
}