değerine 128 and higher var, sadece tek tek karakterler ord arayıp şu değeri> = 128. olanlar işleyebilir kod stdin ve baskılar sadece genişletilmiş ASCII karakter okur:
while (<>) {
while (/(.)/g) {
print($1) if (ord($1) >= 128);
}
}
Alternatif chr birlikte unpack da çalışacaktır. Örnek:
while (<>) {
foreach (unpack("C*", $_)) {
print(chr($_)) if ($_ >= 128);
}
}
(ı ... bazı Perl guru iki tek gömlekleri için bunlardan ikisi yoğunlaşmak eminim)
yerine satır numaralarını yazdırmak için aşağıdaki kullanabilirsiniz (Bu çiftleri kaldırmaz ve unicode geçirildiğinde tek davranış olacaktır):
while (<>) {
while (/(.)/g) {
print($. . "\n") if (ord($1) >= 128);
}
}
(. Teşekkür Yaakov Belch$.
ucu için)
Çok yavaş ve etkisiz bir yaklaşımdır Dave Sherohman en çözümünü http://stackoverflow.com/questions/881931/how-to-print-numbers-of-line-containing-extended-ascii-characters bakın -in-perl/882113 # 882113 Bu çok daha hızlı ve daha basittir. –
Bu cevap Dave'den önce yayınlandı. Dave'in yaklaşımını gördüm ve çoğu durumda tercih edilmesi gerekiyor. Bu sadece bir Perl acemi olduğumu gösteriyor. Bu cevabı silmemeyi tercih ediyorum çünkü son bölüm tam olarak ne istediğini yapıyormuş gibi görünüyor. Ayrıca bkz. Http://stackoverflow.com/questions/882122/reading-a-file-char-by-char-and-checking-for-extented-ascii-char – Stephan202
... ah, bu sayfa silinmiştir. Söylemek yeterlidir, soru, her bir * genişletilmiş ASCII karakteri için satır numarasının basılması gerektiğini belirtmiştir. Benim çözümüm budur. – Stephan202