2009-05-22 4 views

答えて

26

次のように

-T-Bスイッチの仕事。 ファイルの最初のブロックまたは は、strange 制御コードや高ビットが設定された文字のような奇数の文字について調べられます。 の奇妙な文字(> 30%)が多すぎる場合は、 -Bというファイルです。 それ以外の場合は -Tです。また、最初のブロック にヌルを含むファイルはバイナリファイルとみなされます。 -Tまたは -B がファイルハンドルで使用されている場合は、現在のIOバッファが最初のブロックではなく であると検査されます。 -T-Bの両方がNULLファイルの場合は 、ファイルハンドルのテストの場合は EOFのファイルがtrueを返します。 あなたが -Tテストを行うには、ファイルを読み込む必要があるため、ほとんどの 機会にあなたが 「 next unless -f $file && -T $file」のように、最初のファイルに対して -fを使用します。本 学習のPerlの第11章によると
+1

マジックスタートキャッシュ文字 "_"を使用する機会があります。「-f $ fileと-T _」以外の場合は、「次へ」をクリックします。 –

10

:、それがファイルを開く最初の数千のバイトを見て、と推測します:

答えは** Perlは**騙し。ヌルバイト、異常な制御文字、上位ビットがセットされたバイトを見るとバイナリファイルのように見えます。あまり奇妙なことがなければ、テキストのように見えます。時々間違っていると推測されます。テキストファイルにスウェーデン語やフランス語の単語が多い場合(ハイビットで表現された文字、ISO-8859のようなもの、Unicodeのものなど)、Perlはバイナリを宣言してしまうかもしれません。だから完璧ではありませんが、コンパイルされたファイルやPNGのHTMLファイルからソースコードを分離する必要がある場合は、これらのテストでトリックを行う必要があります。
+0

「騙されている」と考えるかどうか分かりません。本当に良い方法はないようです。 – friedo

+0

ファイルが開かれて以来、その種類の不正行為、そんなことは考えていない – TStamper

関連する問題