ファイルテストオペレータ-Bを使ってファイルがバイナリであるかどうかをテストできますが、Perlはこれをどのように内部実装していますか? perldoc -f -B
からファイルがバイナリであることをPerlはどのように知っていますか?
16
A
答えて
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章によると
10
:、それがファイルを開く最初の数千のバイトを見て、と推測します:
答えは** Perlは**騙し。ヌルバイト、異常な制御文字、上位ビットがセットされたバイトを見るとバイナリファイルのように見えます。あまり奇妙なことがなければ、テキストのように見えます。時々間違っていると推測されます。テキストファイルにスウェーデン語やフランス語の単語が多い場合(ハイビットで表現された文字、ISO-8859のようなもの、Unicodeのものなど)、Perlはバイナリを宣言してしまうかもしれません。だから完璧ではありませんが、コンパイルされたファイルやPNGのHTMLファイルからソースコードを分離する必要がある場合は、これらのテストでトリックを行う必要があります。
関連する問題
- 1. オブジェクトがあれば、そのクラスをどのようにしてperlで知ることができますか?
- 2. このサイトは私がスクレーパーであることをどのように知っていますか?
- 3. カーネルはファイルが閉じていることをどのように知っていますか
- 4. 私のウェブサーバーはドメインが私のものであることをどのように知っていますか?
- 5. FirefoxはそのページがAtomフィードであることをどのように知っていますか?
- 6. メソッドがアクションメソッドであることをASP.NET MVCはどのように知っていますか?
- 7. Atomパッケージマネージャ(apm)は、パッケージがAtom用であることをどのように知っていますか?
- 8. アプリケーションは、コンポーネントがページであることをどのように知っていますか
- 9. ここにどのファイルが必要かをどのようにして知ることができますか?
- 10. どのように角度がボタンが送信ボタンであることを知っていますか
- 11. AWSはインポートがどこにあるかをどのように知っていますか?
- 12. バイナリ実行ファイルはどのようにメモリ内の位置を知っていますか?
- 13. perlの言語を知らないとPerlコードが安全であるかどうかを確認するにはどうすればよいですか?
- 14. ブラウザはscssファイルをどのように知ることができますか?
- 15. ブローカはMQRFH2ヘッダーがあることをどのように知っていますか
- 16. このファイル操作はどのようにしてperlで行いますか?
- 17. Perlスクリプトはどのようにして独自のメモリフットプリントを知ることができますか?
- 18. twitter app - リンクが画像であることをどのように知っていますか?
- 19. perlパッケージがAIXにインストールするのに適しているかどうかはどのように知ることができますか?
- 20. どのように私はこのことを知ってRequireJS
- 21. フォーラムがプライベートであるかどうかphpbb3はどのように知っていますか?
- 22. TableViewが空であるかどうかはどのように知ることができますか?
- 23. マウスがウィジェット上にあるかどうかはどのように知ることができますか?
- 24. freadはファイルがCで終わったときをどのように知っていますか?
- 25. コントロールはフォームにフォームが追加されていることをどのように知っていますか?
- 26. MLlib Estimatorは、フィーチャとターゲットカラムが何であるかをどのように知っていますか?
- 27. ウェブサイトは私がプロキシを使用していることをどのように知っていますか?
- 28. アクティブなスレッドがあるかどうかはどのように知ることができますか?
- 29. この場所が切り取った領域内にあるかどうかはどのようにして知ることができますか?
- 30. 通知がiOS端末に届いたことをどのように知っていますか?
マジックスタートキャッシュ文字 "_"を使用する機会があります。「-f $ fileと-T _」以外の場合は、「次へ」をクリックします。 –