Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 標準関数
  3. here

stat関数 - ファイルの詳細な情報を取得する

ファイルの詳細な情報を取得するにはstat関数を使用します。

my @infos = stat $file;

以下がstatで取得できる情報です。

0 ファイルシステムのデバイス番号
1 iノード番号
2 ファイルモード
3 このファイルへのハードリンク数
4 ファイルの所有者のユーザID( 数字 )
5 ファイルの所有者のグループID( 数字 )
6 デバイス識別子
7 ファイルのサイズ( バイト )
8 最終アクセスしてからの経過したエポックからの秒数
9 最終更新してからの経過したエポックからの秒数
10 iノードが変更されてから経過したエポック時からの秒数
11 ファイルの読み書きに適切だと考えられるブロックサイズ
12 割り当てられている実際のブロック数

サンプル

stat関数を使ってファイルの詳細な情報を取得するサンプルです。

use strict;
use warnings;

# ファイルの詳細な情報を取得する stat

my $file = 'a.txt';
my @stat_inf = stat $file;

# statの解説の作成
my @stat_exp = ( 
  '0  dev      ファイルシステムのデバイス番号',
  '1  ino      iノード番号',
  '2  mode     ファイルモード',
  '3  nlink    このファイルへのハードリンク数',
  '4  uid      ファイルの所有者のユーザID( 数字 )',
  '5  gid      ファイルの所有者のグループID( 数字 )',
  '6  rdev     デバイス識別子',
  '7  size     ファイルのサイズ( バイト )',
  '8  atime    最終アクセスしてからの経過したエポック時からの秒数',
  '9  mtime    最終更新してからの経過したエポック時からの秒数',
  '10 ctime    iノードが変更されてから経過したエポック時からの秒数',
  '11 blksize  ファイルの読み書きに適切だと考えられるブロックサイズ',
  '12 blocks   割り当てられている実際のブロック数',
);

if (@stat_inf) {
  for my $i (0 .. 12) {
    # statの情報と解説を結びつけて、出力。
    printf("%-15s%s\n", $stat_inf[$i], $stat_exp[$i]);
  }                                              
}
else { print "stat $file は失敗しました。\n" }

簡単な補則

  • デバイス番号:ファイルシステムは、デバイス(ハードディスク)に関連づけられて、構築されます。そのハードディスクを識別する番号です( たぶん )。 → ファイルシステム
  • iノード: Unix系OSにおいて、ファイルを管理するための識別子のようなものです。→ iノード
  • ファイルモード: Unixにおけるファイルタイプパーミッションを表す値です。→
  • ハードリンク: Unix系のOSでは、ファイルに別名をつけることができます。ハードリンク数とは、このファイルを指す別名の総数のことです。→ ハードリンク
Qiitaで
「3分間Perlテキストクッキング」
という連載を始めました。
テキスト処理を題材にして、3分くらいで読める分量で、書いていきます。
文字コード、テキストデータ、コンピュータにおけるテキストの扱いなど、ソフトウェアの基礎の話題も
3分間Perlテキストクッキング