filehandlesイジハピ!TwitterID:@query1000こと深沢千尋のブログです。♡さいきんブログの評判が意外と気になるようになってきました。filehandlesカテゴリすぐわかる気がするPerlquery1000Comment(0)Trackback(0)Perlのエラーメッセージのコーナー。Perlのエラーメッセージが表示される最小のプログラムを書いて、どういうときにどう怒られるかを研究する。filehandlesである。filehandles」の間に「are」が省略された受動態のSVC文で、「ファイルハンドルでは-Tと-Bはサポートされていない」という意味になる。これらはファイルテスト演算子と呼ばれるPerlの便利機能の一種で、ファイル名に対しては便利に使える。-Tは右に来る式がテキストファイルであれば真を、そうでなければ偽を返す。-Bは逆に、右に来る式がバイナリーファイルであれば真を、そうでなければ偽を返す。テキストファイルというのはPerlのスクリプトやHTMLファイル、Cのソースコードのように、最初から最後まで文字コードが入っているものである。バイナリーファイルというのは画像や音声、コンパイルされたプログラムの実行形式のように、文字コード以外のビットが入っているものである。文字コードもビット(2進数値)のかたまりであるから、テキストはバイナリーの一種であるような気もするが、テキストでないものをバイナリーファイル、というように呼び習わしている。人間は動物の一種であるが、「君は人間だろう。動物じゃないんだから行儀よくしなさい」などと言うのと同じである。この話10回ぐらい書いた気がする。プログラムを書いて実行してみる。$fname;実行してみる。35440PerlのスクリプトfileTestTest.plに対し、-Tは真を、-Bは偽を返す。-sはサイズをバイトで返す演算子であって、451を返す。Perlのエンジン/usr/bin/perlに対し、-Tは偽を、-Bは真を返す。-sは35440を返す。ここまではうまくいっているように思える。演算子にファイル名ではなくファイルハンドルを渡したらどうなるだろうか。これが今回の主題である。$fhandle;では実行。35440あれ、なんかできたなー。Perlのバージョンが変わって、ある日できるようになったんだろうか。それともぼくがなんかカンチガイしているのだろうか。このブログたまにこういうことがあるが、わからないままに放置する。分かったら報告するので許して下さい。分かる人は教えて下さい!★ところで、-Tおよび-B演算子は、Unicodeについてもサポートしているのだろうか。いま、ぼくのMacのターミナルはUTF-8に設定されている。77ということで、UTF-8はOKっぽい。64ということで、UTF-16はダメっぽい。