ファイルの存在を確認する



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

ファイルが存在するかどうかを確認するには、ファイルテスト演算子「-e」を使用します。

-e $file

ファイルが存在すると真値を、存在しないと偽値を返します。ディレクトリやシンボリックリンクなどもファイルとして扱われます。Unixではディレクトリも特別なファイルとみなしファイルという概念でとらえるからです。

通常ファイルが存在するかどうかを確認

ディレクトリではない通常のファイルが存在するかどうかを確認したい場合は、ファイルテスト演算子「-f」で確認できます。

-f $file

通常ファイルが存在すると真値を、存在しないと偽値を返します。通常ファイルとはテキストファイルやバイナリファイルなどのデータを格納しているファイルのことです。

存在を確認できるファイルの種類

その他に、ディレクトリの存在やシンボリックリンクの存在を確認できるファイルテスト演算子もあります。

ファイルの種類 対応するファイル演算子
通常ファイル -f
ディレクト -d
シンボリックリンク -l
名前つきパイプ、パイプであるファイルハンドル -p
ソケット -S
ブロックスペシャルファイル -b
キャラクタースペシャルファイル -c

用語の解説のページにリンクを張っておきました。

サンプルプログラム

ファイルテスト演算子「-e」を使ってファイルの存在を確認するサンプルです。

use strict;
use warnings;

# ファイルの存在を確認する。
# -e ファイル名
# -e を使えば、ディレクトリやファイルやシンボリックリンクなど
# を区別せずに、それが、存在するかどうかを確認できます。

print "1: ファイルの存在を確認する。 -e \n";
my $file_all_type = 'a';

if (-e $file_all_type) {
  print "'$file_all_type' は、存在します。\n";
}
else { print "'$file_all_type' は、存在しません。\n" }

ファイル演算子 -f を使って通常ファイルの存在を確認するサンプルです。

use strict;
use warnings;

# 通常ファイルの存在を確認する。
# -f ファイル名

print "1: 通常ファイルの存在を確認する。 -f \n";
my $file = 'a.txt';
if (-f $file) {
  print "'$file' は、存在します。\n";
}
else { print "'$file' は、存在しません。\n" }



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

ディレクトリの存在を確認する



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

ディレクトリが存在するかどうかを確認するには、ファイルテスト演算子「-d」を使用します。

-d $file

ディレクトリが存在すると真値を、存在しないと偽値を返します。

ファイル演算子 -d を使ってディレクトリの存在を確認するサンプルです。

use strict;
use warnings;

# ディレクトリの存在を確認する。
# -d ディレクトリ名

print "1: ディレクトリの存在を確認する。 -d \n";
my $dir = 'd';
if (-d $dir) { 
  print "'$dir' は、存在します。\n";
}
else { print "'$dir' は、存在しません。\n" }



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

ファイルサイズを取得する



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

ファイルサイズを取得するには、ファイルテスト演算子「-s」を使用します。

-s $file

ファイルサイズの単位はバイトです。

サンプルプログラム

ファイルテスト演算子 -s を使ってファイルサイズを取得するサンプルです。

use strict;
use warnings;

# ファイルのサイズを取得する。
# -s ファイル名
# 単位は、バイトです。

print "1: ファイルのサイズを取得する。 -s\n";
my $file = "a.txt";
if (-f $file) {
  my $file_size = -s $file;
  print "$file のファイルサイズは、$file_size バイトです。\n\n";
}
else { print "$file は、存在しませんでした。\n\n" }
use strict;
use warnings;

print "2: ファイルサイズがあるバイトを超えたら出力をとめる。\n";

my $file = "output_$$.txt";
if (-e $file) {
  die "$file は存在します。\n";
}

open my $fh, ">", $file
  or die "File open error : $!";

while (-s $file < 1_000_000) {
  my $string = ('a' x 99) . "\n";
  print $fh $string;
}

print "出力後の $file のファイルサイズは、" . -s $file . "バイトです。\n";

close $fh;



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

sin関数 - サインを求める



  1. Perl




  2. 関数



  3. here

sin関数を使うと、サインを求めることができます。角度はπ(pi関数)を使って、弧度法で指定するのが簡単です。

use Math::Trig 'pi';

sin(pi/2);

(参考)Math::Trig

三角関数については以下のページで詳しく解説しています。

サンプル

sin関数を使ったサンプルです。

use strict;
use warnings;
use Math::Trig 'pi';

# sin(90°) = 1;
print "sin(π/2) = " . sin(pi/2) . "\n";



  1. Perl




  2. 関数



  3. here

cos関数 - コサインを求める



  1. Perl




  2. 関数



  3. here

cos関数を使用するとコサインを求めることができます。角度はπ(pi関数)を使って、弧度法で指定するのが簡単です。

use Math::Trig 'pi';

cos(pi/3);

(参考)Math::Trig

三角関数については以下のページで詳しく解説しています。

サンプル

cos関数を使ったサンプルです。

use strict;
use warnings;
use Math::Trig 'pi';

# cos(60°) = 1/2;
print "cos(π/3) = " . cos(pi/3) . "\n";



  1. Perl




  2. 関数



  3. here

最終更新から経過した日数を取得する



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

最終更新から経過した日数を取得するにはファイルテスト演算子「-M」を使用します。

-M $file
サンプルプログラム

ファイル演算子 -M を使って最終更新から経過した日数を取得するサンプルです。

use strict;
use warnings;

# 最終更新から経過した日数を取得する。
# -M $file

print "1: 最終更新から経過した日数を取得する。\n";
my $file = "a.txt";
if (-e $file) {
  my $from_last_modify = -M $file;
  print "最終更新から $from_last_modify 日経過しています。\n";
}
else { print "$file は存在しません。\n" }



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

最終アクセスから経過した日数を取得する



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here

最終アクセスから経過した日数を取得するには、ファイルテスト演算子「-A」を使用します。

-A $file
サンプルプログラム

ファイル演算子 -A を使って最終アクセスから経過した日数を取得するサンプルです。

use strict;
use warnings;

# 最終アクセス(読み取り)から経過した日数を取得する。
# -A $file

print "1: 最終アクセスから経過した日数を取得する。\n";
my $file = "a.txt";
if (-e $file) {
  my $from_last_access = -A $file;
  print "最終アクセスから $from_last_access 日経過しています。\n";
}
else { print "$file は存在しません。\n" }



  1. Perl




  2. 演算子




  3. ファイルテスト



  4. here