2009-05-22 32 views

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 ederken EOF 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
+1

Sihirli durum önbellek karakterini "_" kullanmak için bir fırsat var: "sonraki -f $ dosya ve -T _" –

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.
+0

bunu "aldatma" olarak kabul edip etmediğimi bilmiyorum. Gerçekten daha iyi bir yol olduğu gibi değil. – friedo

+0

dosyayı açtığından beri, aldatma, düşünmüyor musun? – TStamper

İlgili konular