2008-03-11から1日間の記事一覧

7.1 ファイルをオープンする

2つの引数で指定する場合 open(SOURCE, "< $path") or die; open(SINK, "> $path") or die; 3つの引数で指定する場合 open(SOURCE, "<", $path) or die; open(SINK, ">", $path) or die; sysopen関数を使用する use Fcntl; sysopen(SOURCE, $path, O_RDONLY)…

7.5 ファイルハンドルを変数に格納する

openの第1引数に未定義のスカラ変数を指定する。 open(my $fh, "<", $filename) or die; 型ブログ表記法を使用する。 $variable = *FILEHANDLE; # ファイルハンドルを変数に格納 subroutine(*FILEHANDLE); # ファイルハンドルを関数に直接渡す。 sub subrout…

7.4 エラーメッセージ内にファイル名を含める

ファイルハンドルとして、ファイル名を使用する(ただし、strict refsが有効になっていると、使用できない) open($path, "<", $path) or die "Couldn't open $path for reading : $!\n";

7.3 ファイル名の中のチルダを展開する

glob関数を使用する。 open(FH, glob("~joebob/somefile")) || die "Couldn't open file: $!"; 置換を使用して、ファイル名を手動で展開する。 $filename =~ s{ ^ ~ ( [^/]* ) } {$1 ? (etpwnam($1))[7] : ( $ENV{HOME} || $ENV{LOGDIR} || (getpwuid($<))[7…

7.2 特殊な名前のファイルをオープンする

特殊な名前を持つファイルをオープンしたい(例えば、名前が-のみのファイル、名前が<、>、|で始まるファイル、など)。しかし、open関数はこれらの文字を特殊な意味に解釈してしまい、ファイル名とは解釈してくれない。 引数を2つではなく、3つで指定して…