萌えPerl
しきり線
大項目 ファイル
ハッシュたん
 ファイルを操作する関数として以下のものがあります。

関数構文説明
openopen(ファイルハンドル,ファイル)ファイルを開きます。
open (ファイルハンドル, "ファイル")
open (ファイルハンドル, "< ファイル")
読込み
open (ファイルハンドル, "> ファイル")書込み
open (ファイルハンドル, ">> ファイル")追記
open (ファイルハンドル, "+> ファイル")
open (ファイルハンドル, "+< ファイル")
読書き
open (ファイルハンドル, "| コマンド")パイプ出力用
open (ファイルハンドル, "コマンド |")パイプ入力用
closeclose(ファイルハンドル)開いたファイルを閉じます。
open(ファイルハンドル,"> ファイル")
open(ファイルハンドル,"+> ファイル")
ファイルを生成します。
(書込みか読書きで開く)
unlinkunlink(ファイル)ファイルを削除します。
renamerename "変更前", "変更後"ファイル名を変更します。

 ディレクトリと同じ形式の表にまとめてみました。
 ファイルの方もopenとcloseはセットで使います。
 readdir のような関数はなくて、単純に @x=<ファイルハンドル>、$x=<ファイルハンドル> のように = で代入できます。ファイルハンドルを<>ではさみます。

 例、

ギラファノコギリクワガタ、
グランディスオオクワガタ、
エレファスゾウカブト、
と書いたファイルを test.txt と言う名前で同じディレクトリに保存。 (C:\Program Files\Apache Group\Apache2\cgi-bin)

#!c:/perl/bin/perl
open(IN,"test.txt");
@file = <IN>;
close(IN);
print "Content-type: text/html; charset=Shift_JIS\n\n";
print @file;

ギラファノコギリクワガタ、グランディスオオクワガタ、エレファスゾウカブト、

 ファイルハンドルもディレクトリハンドルと同じく、「今開いているファイル」を区 別するために一時的に関連付けられる名前です。変数みたいな使い方をします。$はいり ませんが習慣的に大文字を使います。
 いったん閉じたあとで同じ名前を使いまわしてもよいです。
 プログラムごとに好きな名前を付けてかまいません。

 以下のファイルハンドルは特殊な意味を持つので、これと同じ名前は避けましょう。
 公開するHP用に組むCGIでは使わないと思う。
関数構文説明
STDIN標準入力パイプ、リダイレクト、キーボードから。
STDOUT標準出力パイプ、リダイレクト、モニターへ。
STDERR標準エラーエラー時。

 パーミッションやオーナーの設定もディレクトリと同じようにします。

中項目 ファイル演算子
ハッシュたん
 ファイルやディレクトリの有無や、それがどういうものかを調べることができます。
 例えば、test.cgiと同ディレクトリにtext.txtというファイルが有る場合。
#!c:/perl/bin/perl
print "Content-type: text/html; charset=Shift_JIS\n\n";
if (-e "test.txt"){
  print "ありですぅ";
} else {
  print "なしですぅ";
}

ありですぅ
 となります。
 -e というのは、ファイルの有無を判断する演算子で、ファイルやディレクトリが存在 すれば1を返します。

 というわけで、ファイル演算子一覧表。
演算子……であれば1(真、true)
-w書き込み可能
-x実行可能
-o実行ユーザーと所有者が同一
-R実行ユーザーでなく、実ユーザーで読み込み可能
-W実行ユーザーでなく、実ユーザーで書き込み可能
-X実行ユーザーでなく、実ユーザーで実行可能
-O実行ユーザーでなく、実ユーザーのもの
-e存在すれば
-z存在し、サイズが 0
-sファイルサイズを返す
-f通常ファイル
-dディレクトリ
-lシンボリックリンク
-p名前付きパイプ
-Sソケット
-Tテキストファイル
-Bバイナリファイル
-bブロック型の特殊ファイル
-cキャラクタ型の特殊ファイル
-usetuid ビットがセットされていれば
-gsetgif ビットがセットされていれば
-ksticky ビットがセットされていれば
-M最終更新時刻からの日数
-A最終アクセス時刻からの日数
-C最終 i ノード変更時刻からの日数
-tファイルハンドルが tty としてオープンされていれば
 -s -M -A -C は1ではなく、それぞれの値を返します。
 なのでIF文よりも $filesize = (-s "text.txt"); というようにに、変数に代入する ような使い方の方が多くなると思います。
例)
# 0.1日より古いファイル(こういう名前付けルールの→/[a-f0-9]{32}$/o)を削除する
my $dir = '/home/hoge/tmp';
unlink grep { -M > 0.1 } grep { /[a-f0-9]{32}$/o } <$dir/*>;