Bir dosyanın ikili olup olmadığını sınamak için dosya test operatörü-B'yi kullanabileceğinizi biliyorum, ancak Perl bunu dahili olarak nasıl uygular? perldoc -f -B
itibarenPerl bir dosyanın ikili olduğunu nasıl biliyor?
16
A
cevap
26
şu şekildedir:
-T
ve-B
anahtarları çalışır. Dosyanın ilk satırı veya , garip kontrol kodları veya yüksek bit kümesine sahip karakterler gibi garip karakterler için incelenir. Çok fazla garip karakter (>% 30) bulunursa, bu bir-B
dosyasıdır; aksi halde-T
dosyadır. Ayrıca, numaralı boştaki null içeren herhangi bir dosya, bir ikili dosya olarak kabul edilir.-T
veya-B
bir dosya grubunda kullanılırsa, geçerli IO arabelleği ilk blok yerine incelenir. Hem-T
hem de-B
, bir null dosyası veya bir dosya grubunu test ederkenEOF
numaralı dosyada doğru olarak döndürülür.-T
sınamasını yapmak için bir dosya okumak zorundasınız, çoğuolayları için,, "next unless -f $file && -T $file
" gibi dosyaya karşı kullanmak istediğiniz. Kitabın Öğrenme Perl Bölüm 11 uyarınca
10
: bu dosyayı açar ilk birkaç bin bayt bakar ve isabetli bir tahminde yapar:
cevaptır ** Perl ** hile . Çok sayıda boş bayt, sıra dışı kontrol karakterleri ve yüksek bit kümesi olan baytları görürse, bu ikili bir dosyaya benziyor. Çok garip şeyler yoksa, o zaman metin gibi görünüyor. Bazen yanlış tahmin ediyor. Bir metin dosyası çok sayıda İsveççe veya Fransızca sözcük içeriyorsa (bu, yüksek bit kümesiyle karakterlere sahip olabilir, bazı ISO-8859-şey varyantı veya belki de bir Unicode sürümü gibi), Perl'i ikili olarak bildirmeye kandırabilir. Yani mükemmel değil, ancak kaynak kodunuzu derlenmiş dosyalardan veya HTML dosyalarını PNG'lerden ayırmanız gerekiyorsa, bu testler hile yapmalıdır.
İlgili konular
- 1. Git, dosyanın yeniden adlandırıldığını nasıl biliyor?
- 2. Bir dosyanın açık olduğunu kontrol edin
- 3. TortoiseHg, Resource.h'nin neden ikili olduğunu düşünüyor?
- 4. Bir ikili dosyanın içeriğini Clojure'daki bir dizeye nasıl okunur?
- 5. Perl kullanarak bir dosyanın uzantısını nasıl kontrol edebilirim?
- 6. Perl kullanarak bir dosyanın açık olup olmadığını nasıl kontrol edersiniz?
- 7. Dd ile bir ikili dosyanın bazı baytlarının üzerine yazmak nasıl?
- 8. Firebase, değiştirdiğiniz veritabanının size ait olduğunu nasıl biliyor?
- 9. Bios hangi tür BPB'nin var olduğunu nasıl biliyor?
- 10. Bir nesne başka hangi nesnelere sahip olduğunu biliyor mu?
- 11. Localizable.strings error - derleyici, dosyanın eksik olduğunu söylüyor
- 12. Perl ile bir dosyanın adını nasıl alabilirim? Benim perl komut dosyasında
- 13. Git neden cs dosyamın ikili olduğunu düşünüyor?
- 14. Bir binary dosyanın
- 15. Dosyanın perl içinde bir PDF olup olmadığını belirleme
- 16. Java uzun bir ikili kadar çok basit bitmiş olduğunu düşündüğüm bir şey için ikili
- 17. Birisi servis "perlfiddle" hakkında biliyor?
- 18. Perl: Perl bir karma değer
- 19. Bir dosyanın python'da bir dizin mi yoksa normal dosya mı olduğunu nasıl kontrol edersiniz?
- 20. Bir dosyanın
- 21. bir dosyanın
- 22. CLR kutulu bir nesnenin türünü nasıl biliyor?
- 23. HDFS, dosyanın hala açık olduğunu, ancak işlemin yazıldığı tarihte
- 24. Bir dosyanın bir bölümünü bir dosyanın kendisi gibi nasıl ele alabilirim?
- 25. Bir dosyanın bir denetleyiciye nasıl yüklendiğini sınama?
- 26. Makefile'den bir Perl bir astarı nasıl çalıştırırım?
- 27. Bir ikili ikili düzenleyiciden ağ bayt sırasını nasıl dönüştürebilirim?
- 28. VMMap, belirli bir bellek bölgesinin özellikle Thread Stack olduğunu biliyor mu?
- 29. Raylar göçün nasıl yürüdüğünü/çalıştırıldığını nasıl biliyor?
- 30. Chrome coğrafi konumumu nasıl biliyor?
Sihirli durum önbellek karakterini "_" kullanmak için bir fırsat var: "sonraki -f $ dosya ve -T _" –