|
|
|
|||
|
||||
|
サイト管理人専用勉強部屋 << 注:このページはバイクと関係ありません >>
このコンテンツは物忘れが多いサイト管理人がホームページ運営に伴う技術的なことをメモしておくために開いている物です。 < オートバイに関するコンテンツはサイトトップからどうぞ > |
||||
|
0、ファイルハンドル |
|
ファイルオープン ファイルハンドルとは、Perl プログラムが他のファイルを参照するときに使う名前のことで、独自の名前空間にて管理されているからスカラー変数、配列、ハッシュなどと同じ名前が使えるが特別の文字を使わないのでブロックラベルのように大文字で記述する。( STDIN、STDOUT、STDERR は Perl の標準装備 ) 標準装備以外のファイルハンドルを使う場合、open 関数を併用して下記のように記述する。 |
||
|
open ( HANDLENAME , "filename" ) ; |
|
|
|
これで filename というファイルが入力用に開かれ HANDLENAME というハンドルネームに関連づけられるので、そのファイルからデータを参照する場合はハンドルネームを使って操作することになる。 |
||
|
open ( HANDLENAME , "../date/file/filename" ) ; |
|
|
|
このように異なるディレクトリーにあるファイルを参照するときはパスを記述することもできる。 |
||
|
読み込み ファイルハンドルを使って開いたファイルを読み込む場合は、そのファイルを開いたファイルハンドルに対して行う。 |
||
|
open ( HANDLE , "file.txt" ) ; $data = <HANDLE> ; |
ファイルハンドル HANDLE に file.txt を関連づける $data に file.txt の一行目が代入される。 |
|
|
ファイルハンドルをアングルブラケット < > で囲むことにより file.txt の最初の行(改行文字を含む)が読み込まれる。file.txt 内の全ての行を読み込むには下記のように記述する。 |
||
|
open ( HANDLE , "file.txt" ) ; while ( <HANDLE> ) { $data = $_ ; } |
file.txt を一行ずつ読み出し $_ に格納 全ての行を $data に代入 |
|
|
ファイルクローズ ファイルハンドルを使い終わったら close 関数によりファイルを閉じておく。ちなみに Perl プログラムが終了したらファイルハンドルは自動的にクローズされるのだが、どの解説本にも「開いたものは閉じましょう」と書いてあるので私は従うことにします。 |
||
|
close ( HANDLE ) ; |
たったこれだけのことだけどね、、、 |
|
書き込み ファイルハンドルを使ってファイルに書き込みをする場合は、ファイルを書き込み用で開く必要がある。 |
||
|
open ( HANDLE , "file.txt" ) ; open ( HANDLE , "> file.txt" ) ; open ( HANDLE , ">> file.txt" ) ; |
読み込み用 上書き用 追加書き込み用 |
|
|
これらの open 関数は成功すれば真をかえし、失敗(ファイルがない、パーミッションが間違っている等)すれば偽を返す。 |
||
|
実際にファイルに書き込みをするのは読み込むときと同じでファイルハンドルに対して行う。 |
||
|
open ( HANDLE , "> file.txt" ) ; print HANDLE $data ; close ( HANDLE ) ; |
上書き用で file.txt を開くと ファイルの中身は $data のデータと入れ替わる |
|
|
print 文によりファイルハンドルにデータを出力するのだが、ファイルハンドルとデータの間はカンマではなくスペースで区切るので注意(追加書き込み用 >> で開くと元のデータの後に $data が追加される) |
||
|
1、ファイルテスト |
|
Perl ではディレクトリー内のファイルを間違って上書きしたり消してしまったりしないように予めファイル名や容量、種類、更新日等を調べることができる。例えばファイルが存在するかどうかを調べる「 -e 」演算子を使うとファイルが存在すれば真を返し、ファイルが存在しなければ偽を返す。 |
||
|
$name = "index.html" ; if ( -e $name) { print "It's $name file OK" ; } else { print "Error $name file is none" ; } |
"index.html" ファイルを探し真偽をかえす 見つかれば OK そうでなければ、、、 エラーをプリントする |
|
ファイルテスト演算子 |
|
-r -w -x -o -R -W -X -O -e -z -s -f -d -l -S -p -b -c -u -g -k -t -T -B -M -A -C |
ファイルやディレクトリが読み出し可能 ファイルやディレクトリが書き込み可能 ファイルやディレクトリが実行可能 ファイルやディレクトリをこのユーザーが所有している ファイルやディレクトリが、実行ユーザーではなく、実ユーザーによって読み出し可能 ファイルやディレクトリが、実行ユーザーではなく、実ユーザーによって書き込み可能 ファイルやディレクトリが、実行ユーザーではなく、実ユーザーによって実行可能 ファイルやディレクトリが、実行ユーザーではなく、実ユーザーによって所有されている ファイルやディレクトリが存在している。 ファイルが存在していて、かつ大きさが「0」である ファイルやディレクトリが存在していて、かつ大きさが「0」でない 普通のファイルである ディレクトリである シンボリックリンクである ソケットである 名前付きパイプである ブロック特殊デバイスである キャラクタ特殊デバイスである ファイルやディレクトリが setuid されている ファイルやディレクトリが setgid されている ファイルやディレクトリの sticky ビットがセットされている このファイルハンドルに対して isatty () が真である テキストファイルである バイナリファイルである 内容が最後に変更されてからの日数 最後にアクセスされてからの日数 inode が最後に変更されてからの日数 |
|
|
(これらの演算子は、ファイル名以外にファイルハンドルに対しても実行可能である) |
||
|
if ( -e "./file.txt" ) { } $size = -s $filename ; |
ファイルの存在を調べる 存在すれば真が返り、ここが実行される ファイルのサイズを得る |
|
2、stat 関数と lstat 関数 |
|
stat 関数を使うとファイルテスト演算子で得られない情報も取得することができる。引数にファイル名かファイルハンドルを与え、添え字にてそのファイルに関する以下の情報を取り出すことができる。 ( $dev , $ino , $mode , $nlink , $uid , $gid , $rdev , $size , $atime , $mtime , $ctime , $blksize , $blocks ) = stat ( $filename ) ; |
||
|
添え字 [ 0 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] |
得られる情報 ファイルシステムのデバイス情報 |ノード番号 ファイルモード(パーミッション等) 対象ファイルのリンク数 対象ファイル所有者のユーザー ID 対象ファイルグループのグループ ID デバイス識別子 ファイルサイズ(バイト数) 最終アクセス時間 最終変更時間 最終|ノード変更時間 最適ブロックサイズ 割り当てられているブロック数 |
|
@fileinfo = stat ( $filename ) ; $filesize = $fileinfo[ 7 ] ; |
@fileinfo にファイル情報を取り込み 必要な情報を取り出す(ここではファイルサイズを取り出している) |
| トップ > Webの部屋 > Perl ファイル |
|
|
MotorCycle ProShop PALS Co.,Ltd. Sorry, PALS HomePage is Japanese documents only. サイト内のバイク写真やデータは無断使用ご遠慮下さい。Copyright © Allright reserved. |
|