Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen perl5120delta komutudur.
Program:
ADI
perl5120delta - perl v5.12.0 için yenilikler
AÇIKLAMA
Bu belge, 5.10.0 sürümü ile 5.12.0 sürümü arasındaki farkları açıklar.
5.12.0'daki hata düzeltmelerinin çoğu, 5.10.1 bakım sürümüne zaten dahil edilmiştir.
Bu değişikliklerin listesini 5.10.1 sürüm notlarında (perl5101delta) görebilirsiniz.
çekirdek Donanımlar
Yeni "paket ADI VERSİYON" sözdizimi
Bu yeni sözdizimi, modül yazarının bir ad alanının $VERSION değerini ayarlamasına olanak tanır.
ad alanı 'paket' ile bildirilir. "$VERSION = ..." ihtiyacını ortadan kaldırır ve
benzer yapılar. Örneğin
paket Foo::Bar 1.23;
# $Foo::Bar::VERSION == 1.23
Bunun birkaç avantajı vardır:
· $VERSION, "NAME VERSION kullan" ile tamamen aynı şekilde ayrıştırılır
· $VERSION derleme zamanında ayarlanır
· $VERSION, karşılaştırma operatörlerinin uygun şekilde aşırı yüklenmesini sağlayan bir sürüm nesnesidir.
$VERSION ile ondalık (1.23) veya noktalı ondalık (v1.2.3) sürüm numaralarını karşılaştırmak
doğru çalışır.
· "$VERSION = ..." ve "eval $VERSION" karmaşasını ortadan kaldırır
· VERSION'ın sayısal bir değişmez veya v-string değişmezi olmasını gerektirdiğinden,
MM->parse_version'ın yaptığı gibi "değerlendirme" yapılmadan araç zinciri modülleri tarafından statik olarak ayrıştırılır
"$VERSION = ..." için
Sadece "paket ADI" ile eski kodu kırmaz, "paket ADI" kullanan kodu kırmaz.
VERSION", Perl 5.12.0 veya daha yenisiyle sınırlandırılmalıdır.
iki bağımsız değişkenden üç bağımsız değişkene "açık" olarak değiştirin. En son Perl'e ihtiyaç duyan kullanıcılar
fayda sağlayacak ve belki de birkaç yıl sonra standart bir uygulama haline gelecektir.
Ancak, "paket ADI VERSİYONU", yeni, 'katı' bir sürüm numarası biçimi gerektirir. Görmek
Ayrıntılar için "Sürüm numarası biçimleri".
The "..." Şebeke
Yada Yada operatörü lakaplı yeni bir operatör "..." eklendi. O istendi
henüz uygulanmayan yer tutucu kodunu işaretlemek için. Perlop'ta "Yada Yada Operatörü" konusuna bakın.
üstü kapalı eleştiri
5.11.0'a eşit veya daha büyük bir sürüm numarasıyla "SÜRÜM kullan" sözdizimini kullanmak,
" katı kullan"ın yapacağı gibi sözcüksel olarak kısıtlamaları etkinleştirin (etkinleştirmeye ek olarak
özellikler.) Aşağıdakiler:
5.12.0'ı kullanın;
anlamına geliyor:
sıkı kullanın;
':5.12' özelliğini kullan;
Unicode iyileştirmeler
Perl 5.12, şu anda bizim için mevcut olan en son sürüm olan Unicode 5.2 ile birlikte gelir.
serbest bırakmak. Unicode'un bu sürümü Ekim 2009'da yayınlandı. Bkz.
<http://www.unicode.org/versions/Unicode5.2.0> nelerin değiştiğiyle ilgili daha fazla ayrıntı için
standardın bu versiyonu. Yükleme ve kullanma talimatları için perlunicode'a bakın
Unicode'un diğer sürümleri.
Ayrıca, Perl'in geliştiricileri, Perl'in Unicode uygulamasını önemli ölçüde iyileştirdi.
Tüm ayrıntılar için aşağıdaki "Unicode revizyonu"na bakın.
Y2038 uyma
Perl'in temel zamanla ilgili işlevleri artık Y2038 uyumludur. (Sizin için pek bir şey ifade etmeyebilir,
ama çocuklarınız buna bayılacak!)
qr aşırı yükleme
Artık "qr//" operatörünü aşırı yüklemek, yani normal ifadeye dönüştürmek mümkün, bunun gibi
boolean, dize veya nesne sayısına aşırı dönüştürme zaten mümkündü. Bu
"=~" operatörünün sağ tarafında bir nesne göründüğünde veya
bir normal ifadeye enterpolasyonlu. Aşırı yüke bakın.
Geçmeli anahtar kelimeler
Uzatma modülleri artık yeni türler tanımlamak için Perl ayrıştırıcısına temiz bir şekilde bağlanabilir.
anahtar kelime başlı ifade ve bileşik ifade. Anahtar kelimeyi izleyen sözdizimi
tamamen uzantı tarafından tanımlanır. Bu, tamamen Perl olmayan bir alt dilin
temiz bir şekilde oluşturulmuş doğru işlemlerle satır içi olarak ayrıştırılır.
Mekanizma için perlapi'deki "PL_keyword_plugin" bölümüne bakın. Perl çekirdek kaynak dağılımı
ayrıca ters Lehçe uygulayan yeni bir XS::APItest::KeywordRPN modülü içerir
Takılabilir anahtar kelimeler aracılığıyla notasyon aritmetiği. Bu modül esas olarak test amaçlı kullanılır,
ve normalde kurulmaz, aynı zamanda yeni aygıtın nasıl kullanılacağına bir örnek teşkil eder.
mekanizması.
Perl'in geliştiricileri bu özelliğin deneysel olduğunu düşünüyor. Kaldırabilir veya değiştirebiliriz
Perl 5.14'te geriye dönük uyumsuz bir şekilde.
API'ler için Daha iç organlar
Lexer'ın en alt katmanları ve ped sisteminin parçaları artık XS için kullanılabilen C API'lerine sahiptir
uzantılar. Bunlar, takılabilir anahtar kelimelerin doğru kullanımını desteklemek için gereklidir, ancak
diğer kullanımlar da. Yeni API'ler deneyseldir ve bunların yalnızca küçük bir bölümünü kapsar.
çekirdeğin bu alanlardaki olanaklarından tam olarak yararlanmak gerekli olacaktır. Bu
Perl 5.13 geliştirme döngüsünün, eksiksiz bir
temiz, desteklenen arayüzler.
Perl'in geliştiricileri bu özelliğin deneysel olduğunu düşünüyor. Kaldırabilir veya değiştirebiliriz
Perl 5.14'te geriye dönük uyumsuz bir şekilde.
geçersiz kılınabilir işlev arama
Bir genişletme modülünün altyordam aramasını değiştirmek için rv2cv op'larının oluşturulmasını bağladığı yer
işlem, bu artık bareword alt yordam çağrıları için doğru çalışıyor. Bunun anlamı şudur ki
Bu şekilde başvurulan alt programlardaki prototipler doğru şekilde işlenecektir. (Önceden
bareword altyordam adları, başlangıçta, ayrıştırma amacıyla, bağlanamaz bir şekilde arandı.
mekanizma, bu nedenle uzantılar yalnızca birlikte görünen alt program adlarını uygun şekilde etkileyebilir.
bir "&" işareti.)
A uygun arayüzey için takılabilir Yöntem çözüm Siparişlerim
Perl 5.12.0'dan itibaren, yöntem çözümleme emirlerini takmak ve kullanmak için yeni bir arayüz vardır.
varsayılan doğrusal derinlik ilk arama dışında. C3 yöntemi çözüm sırası eklendi
5.10.0, Perl-space arayüzünü değiştirmeden bir eklenti olarak yeniden uygulandı. Görmek
Daha fazla bilgi için perlmroapi.
"\N" deneysel regex kaçış
Perl artık "\n"nin tersi olarak düşünebileceğiniz yeni bir normal ifade kaçışı olan "\N"yi destekliyor.
Varlığından veya varlığından bağımsız olarak yeni satır olmayan herhangi bir karakterle eşleşir.
"/s" tek satır eşleme değiştiricisinin olmaması. Bir karakter sınıfı içinde kullanılamaz.
"\N{3}", yeni olmayan 3 satırı eşleştirmek anlamına gelir; "\N{5,}", en az 5 ile eşleşmek anlamına gelir. "\N{NAME}"
hala "NAME" adlı karakter veya dizi anlamına gelir, ancak "NAME" artık bir şey olamaz
3 veya "5" gibi.
Bu, karakter adları için sayılara izin veren özel bir karakter çevirmeni bozacaktır.
"\N{3}" artık yeni satırda olmayan 3 karakterle eşleşmek anlamına gelecek, adı olan karakterle değil
3'tür (Unicode standardı tarafından tanımlanan hiçbir ad bir sayı değildir, bu nedenle yalnızca özel çevirmenler
etkilenebilir.)
Perl'in geliştiricileri, mevcut verilerle olası kullanıcı karışıklığı konusunda biraz endişelidir.
Karakterleri Unicode adlarına göre eşleştiren "\N{...}" yapısı. Sonuç olarak, bu
özellik deneyseldir. Onu kaldırabilir veya geriye dönük uyumsuz bir şekilde değiştirebiliriz.
İnci 5.14.
DTrace destek
Perl artık DTrace için biraz desteğe sahip. "DTrace desteği" bölümüne bakın. INSTALL.
Destek için "configure_requires" in CPAN modül meta
Hem "CPAN" hem de "CPANPLUS" artık "configure_requires" anahtar sözcüğünü desteklemektedir. META.yml
En son CPAN dağıtımlarında bulunan meta veri dosyası. Bu dağıtıma izin verir
çalıştırmadan önce yüklenmesi gereken yapılandırma ön koşullarını belirtmek için yazarlar
Makefile.PL or Yapı.PL.
Nasıl yapılacağı hakkında daha fazla bilgi için "ExtUtils::MakeMaker" veya "Module::Build" belgelerine bakın.
CPAN için bir dağıtım oluştururken "configure_requires" öğesini belirtin.
"her biri", "anahtarlar", "değerler" vardır şimdi Daha esnek
"each", "keys", "values" işlevi artık dizilerde çalışabilir.
"ne zaman" as a ifade niteleyici
"ne zaman" ifadesinin artık bir ifade değiştiricisi olarak kullanılmasına izin verilir.
$, esneklik
$, değişkeni şimdi bağlanabilir.
// in ne zaman cümlecikleri
// şimdi || gibi davranıyor ne zaman cümleleri
etkinleştirilmesi uyarılar itibaren senin kabuk çevre
Artık "PERL5OPT" ortam değişkeninden "-W" ayarını yapabilirsiniz
"silmek yerel"
"yerel sil" artık bir karma girdiyi yerel olarak silmenize olanak tanır.
Yeni destek için Özet ad soketler
Soyut ad alanı yuvaları, AF_UNIX ailesinde yaşayan Linux'a özgü yuva türüdür,
keyfi karakter dizilerini adres olarak kullanabilmek için biraz kötüye kullanma:
nul bayt ile ve nul bayt ile sonlandırılmaz, ancak uzunluk ile sonlandırılır
priz() sistem çağrısı.
32 bit sınır on substr argümanlar kaldırıldı
"substr" bağımsız değişkenlerindeki 32 bitlik sınır artık kaldırılmıştır. Ürün yelpazesinin tamamı
sistemin işaretli ve işaretsiz tam sayıları artık "pos" ve "len" argümanları için kullanılabilir.
Potansiyel Uyumsuz Değişiklikler
kullanımdan kaldırmalar uyarmak by varsayılan
Perl'in geliştiricileri, yıllar içinde bir dizi dil özelliğini kullanımdan kaldırdı.
çeşitli sebepler. Perl artık, kullanımdan kaldırılmış bir dil varsa bir uyarı vermek için varsayılandır.
özelliği kullanılır. Perl'in şimdi sizi uyardığı kullanımdan kaldırmaların çoğu kullanımdan kaldırıldı
yıllarca. Perl'in belirli bir sürümünde kullanımdan kaldırılanların bir listesini şurada bulabilirsiniz:
bu sürüm için "perl5xxdelta.pod" dosyası.
Bu özelliği belirli bir sözlük kapsamında devre dışı bırakmak için "uyarı yok" seçeneğini kullanmalısınız.
'deprecated';" Hangi dil özelliklerinin kullanımdan kaldırıldığı ve
çeşitli kullanımdan kaldırma uyarılarının açıklamaları için lütfen perldiag'a bakın. Bkz. "Kullanımdan Kaldırmalar"
Perl'in geliştiricilerinin bir parçası olarak kullanımdan kaldırdıkları özelliklerin ve modüllerin listesi için aşağıda
bu sürüm.
Sürümü numara formatları
Kabul edilebilir sürüm numarası biçimleri "katı" ve "gevşek" kurallara göre resmileştirilmiştir.
"paket ADI VERSİYONU" katı bir sürüm numarası alır. "EVRENSEL::VERSION" ve
sürüm nesnesi oluşturucuları gevşek sürüm numaraları alır. Geçersiz bir sürüm sağlamak
ölümcül bir hataya neden olur. "NAME VERSİYONU KULLAN" bölümündeki sürüm bağımsız değişkeni ilk olarak şu şekilde ayrıştırılır:
sayısal değişmez veya v-string ve ardından "UNIVERSAL::VERSION"a geçirilir (ve sonra geçmelidir)
"gevşek" biçim testi).
Bu biçimler, sürüm modülünde tam olarak belgelenmiştir. İlk yaklaşım için, bir
"katı" sürüm numarası, pozitif bir ondalık sayıdır (tamsayı veya ondalık kesir).
üstel veya başında 'v' karakteri olan noktalı ondalık bir v-string ve en azından
üç bileşen. "Gevşek" bir sürüm numarası, üçten daha az bileşene sahip v-string'lere izin verir
veya başında 'v' olmadan. "Gevşek" kurallar altında, hem ondalık hem de noktalı ondalık sürümler
kesirli bir karakterden sonra alt çizgi karakteriyle ayrılmış sondaki bir "alfa" bileşenine sahip
veya noktalı ondalık bileşen.
Sürüm modülü, bir kontrol etmek için "version::is_strict" ve "version::is_lax" işlevlerini ekler.
bu kurallara karşı skaler.
@INC reorganizasyon
@INC'de, "ARCHLIB" ve "PRIVLIB" artık mevcut sürümün "site_perl" ve
"satıcı_perl". "site_perl" ve "vendor_perl" içine kurulan modüller şimdi şuraya yüklenecek
"ARCHLIB" ve "PRIVLIB" de kurulu olanlar tercih edilir.
REGEXP'ler vardır şimdi ilk sınıf
Dahili olarak, Perl artık derlenmiş düzenli ifadeleri ele alır (örn.
"qr//") birinci sınıf varlıklar olarak. Seri hale getiren, seri durumdan çıkaran veya başka bir şekilde Perl modülleri
Perl'in dahili veri yapılarıyla derin etkileşime sahip olmak bunun için güncellenmesi gerekiyor
değiştirmek. Etkilenen CPAN modüllerinin çoğu bu yazı itibariyle zaten güncellendi.
anahtar ifade değişiklikler
"Verilen"/"ne zaman" anahtar ifadesi karmaşık ifadeleri Perl 5.10.0'dan daha iyi işler
(Bu geliştirmeler 5.10.1 ve sonraki 5.10 sürümlerinde de mevcuttur.)
"ne zaman" ifadesinin artık argümanını bir boole olarak yorumladığı iki yeni durum
akıllı eşleşmede kullanılacak ifade:
parmak arası terlik operatörleri
".." ve "..." flip-flop operatörleri artık boole bağlamında değerlendirilir,
olağan semantikleri; perlop'ta "Aralık Operatörleri" bölümüne bakın.
Perl 5.10.0'da olduğu gibi, "ne zaman (1..10)" belirli bir verinin olup olmadığını test etmek için çalışmayacaktır.
değer 1 ile 10 arasında bir tamsayıdır; bunun yerine "ne zaman ([1..10])" kullanmalısınız (not
dizi referansı).
Ancak, 5.10.0'ın aksine, flip-flop operatörlerini boole bağlamında değerlendirmek
artık bir "ne zaman ()" içinde, özellikle de iki durumlu uygulamak için yararlı olmasını sağlar
koşullar, örneğin:
ne zaman (/^=başlangıç/ .. /^=bitiş/) {
# bir şey yap
}
tanımlı veya operatör
"ne zaman (ifade1 //
expr2)", ilk ifade boolean ise boolean olarak değerlendirilecektir. (Bu sadece
normal veya operatör için geçerli olan mevcut kuralı "ne zaman (ifade1
|| ifade2)".)
Akıllı maç değişiklikler
Perl 5.10.0'dan bu yana, Perl'in geliştiricileri akıllı eşleşmede bir dizi değişiklik yaptı.
Şebeke. Bunlar, elbette, smart olduğunda switch ifadelerinin davranışını da değiştirir.
eşleştirme dolaylı olarak kullanılır. Bu değişiklikler 5.10.1 sürümü için de yapılmıştır ve
sonraki 5.10 sürümlerinde kalacaktır.
Değişiklikler için tip tabanlı sevk
Akıllı eşleştirme operatörü "~~" artık değişmeli değildir. Şimdi akıllı bir eşleşmenin davranışı
öncelikle sağ argümanın türüne bağlıdır. Ayrıca, semantiğine sahip
birkaç durumda daha fazla tutarlılık veya kullanışlılık için ayarlanmıştır. genel iken
geriye dönük uyumluluk korunur, birkaç değişiklik not edilmelidir:
· Boş prototipli kod referansları artık özel olarak ele alınmamaktadır. Onlar
diğer kod referansları gibi bir argüman iletti (onu görmezden gelmeyi seçseler bile).
· "%hash ~~ sub {}" ve "@array ~~ sub {}" şimdi altyordamın true döndürdüğünü test edin
tamamını geçmek yerine, karmanın (veya dizinin elemanının) her anahtarı için değer
alt programa referans olarak karma veya dizi.
· Değişebilirlik kırılması nedeniyle, kod referansları artık özel olarak ele alınmamaktadır.
"~~" operatörünün solunda göründüğünde, ancak herhangi bir kaba skaler gibi.
· "undef ~~ %hash" her zaman yanlıştır ("undef" bir karmada anahtar olamayacağından). örtük yok
"" ye dönüştürme yapılır (Perl 5.10.0'da olduğu gibi).
· "$skalar ~~ @array" artık akıllı eşleşmeyi her zaman
dizi. @array içindeki bir öğe "$skalar ~~ $element" öğesini doğrularsa doğrudur. Bu bir
dizinin şunları içerip içermediğini test eden eski davranışın genelleştirilmesi
skaler.
Akıllı eşleştirme operatörü için tam sevk tablosu "Akıllı eşleştirme
detay" perlsyn'de.
Akıllı maç ve aşırı yükleme
En sağdaki argüman tipine dayalı sevk kuralına göre, bir nesne
Operatörün sağ tarafında aşırı yükleme "~~" görünür, aşırı yükleme rutini
her zaman çağrılır (3. bağımsız değişken gerçek bir değere ayarlanmış olarak, bkz. aşırı yük.) Ancak,
nesne solda görünecek, aşırı yük rutini yalnızca
en sağdaki argüman basit bir skalerdir. Bu şekilde, akıllı eşleşmenin dağılımı
diziler, karmaşık türlere sahip diğer davranışların yanı sıra bozulmaz (coderefs,
karmalar, normal ifadeler). Bu nedenle, akıllı eşleşme için rutinleri aşırı yükleyen yazarların çoğunlukla
yalnızca bir skaler ile karşılaştırma yaparken ve muhtemelen dizileştirme aşırı yüklemesiyle ilgilenin;
diğer yaygın durumlar otomatik olarak tutarlı bir şekilde ele alınacaktır.
"~~" artık kendisini aşırı yüklemeyen nesneler üzerinde çalışmayı reddedecek (güvenmekten kaçınmak için
nesnenin temel yapısında). (Ancak, nesne aşırı yüklenirse
stringification veya numification operatörleri ve aşırı yük geri dönüşü etkinse,
her zamanki gibi bunun yerine kullanılabilir.)
Diğer potansiyel uyumsuz değişiklikler
· Bir dizi Unicode özelliğinin tanımları, aşağıdakilerinkilerle eşleşecek şekilde değiştirildi.
geçerli Unicode standardı. Bunlar yukarıda "Unicode revizyonu" altında listelenmiştir. Bu değişiklik
eski tanımları bekleyen kodu kırabilir.
· Boolkeys op, hash ops grubuna taşındı. Bu ikili uyumluluğu bozar.
· Filehandles artık her zaman "IO::File" olarak kutsanmıştır.
Önceki davranış, Filehandles'ı FileHandle'a (boş bir proxy sınıfı) kutsamaktı.
belleğe yüklenmişse ve aksi takdirde onları "IO::Handle" içine kutsamak için.
· "Özellik kullan :5.10*" semantiği biraz değişti. Bkz. "Modüller ve
Pragmata" daha fazla bilgi için.
· Perl'in geliştiricileri artıkPerforce yerine git kullanıyor. Bu tamamen içsel olmalı
değişiklik yalnızca çekirdek üzerinde aktif olarak çalışan kişilerle ilgilidir. Ancak, görebilirsiniz
değişikliğin bir sonucu olarak perl'deki küçük fark. Örneğin bazılarında
"Perl -V" çıktısının ayrıntıları. Daha fazla bilgi için perlrepository'ye bakın.
· "Test::Harness" 2.x - 3.x yükseltmesinin bir parçası olarak, deneysel
"Test::Harness::Straps" modülü kaldırıldı. Daha fazlası için "Modüller ve Pragmata" bölümüne bakın
detaylar.
· "ExtUtils::MakeMaker" yükseltmesinin bir parçası olarak, "ExtUtils::MakeMaker::bytes" ve
"ExtUtils::MakeMaker::vmsish" modülleri bu dağıtımdan kaldırıldı.
· "Module::CoreList" artık %:patchlevel karmasını içermiyor.
· "uzunluk tanımsız" artık tanımsız olarak dönüyor.
· Desteklenmeyen özel C API işlevleri, aşağıdakilere sızıntıyı önlemek için artık "statik" olarak bildiriliyor.
Perl'in genel API'si.
· Önyükleme sürecini desteklemek, mini perl artık UTF-8 desteği ile oluşturulmuyor
normal ifade motoru.
Bu, bir derlemenin PERL_UNICODE kümesi ve bir UTF-8 yerel ayarıyla tamamlanmasını sağlar. Olmadan
miniperl, UTF-8 bileşenlerini yükleyemediği için bu bir önyükleme sorunu var.
regexp motoru, çünkü henüz inşa edilmediler.
· mini perl'nin @INC'si artık sadece "-I..." ile sınırlandırılmıştır, $ENV{PERL5LIB} bölünmesi ve
"".""
· Bir "#line XXX" yönergesinden sonra artık bir boşluk veya yeni satır gerekiyor.
· Bağlı kütükbelirteçler artık EOF tipini sağlayan ek bir EOF yöntemine sahiptir.
· Diğer tüm akış kontrol ifadeleriyle daha iyi eşleşmesi için "foreach" artık şu şekilde kullanılmayabilir:
bir nitelik.
· Perl'in 5.10.0 sürümünde kullanımdan kaldırılan komut satırı anahtarı "-P" artık
kaldırıldı. CPAN modülü "Filter::cpp" alternatif olarak kullanılabilir.
kullanımdan kaldırmalar
Zaman zaman, Perl geliştiricileri, özellikleri veya modülleri kullanımdan kaldırmayı gerekli buluyor.
daha önce çekirdek dağıtımın bir parçası olarak gönderdik. Acının farkındayız
ve Perl'de geriye dönük uyumsuz bir değişikliğin geliştiriciler için neden olabileceği hayal kırıklığı
Perl'de yazılım oluşturma veya bakımını yapma. Bir
işlevsellik veya sözdizimi, hafife aldığımız bir seçim değil. Bazen, seçeriz
kötü tasarlanmış olduğu tespit edildiğinden işlevsellik veya sözdizimi kullanımdan kaldırıldı veya
uygulandı. Bazen bunun nedeni, diğer özellikleri geri tutmaları veya
performans sorunları. Bazen nedenler daha karmaşıktır. Mümkün olan her yerde deneriz
kullanımdan kaldırılan işlevselliği en azından önceki biçiminde geliştiricilerin kullanımına sunmak
bir büyük sürüm. Kullanımdan kaldırılan bir özellik, yeteneğimizi etkin bir şekilde bozmadığı sürece
Perl'i korumak ve genişletmek için onu mümkün olduğunca uzun süre olduğu gibi bırakmaya çalışacağız.
Aşağıdaki öğeler artık kullanımdan kaldırılmıştır:
intihar
"suidperl" artık Perl'in bir parçası değil. Setuid'i taklit etmek için bir mekanizma sağlamak için kullanılır
uygun şekilde desteklemeyen sistemlerde izin bitleri.
Boş bir öznitelik listesi anlamına gelen ":=" kullanımı
Perl'in ayrıştırıcısının bir kazası, bu yapıların hepsinin eşdeğer olduğu anlamına geliyordu:
benim $pi := 4;
benim $pi : = 4;
benim $pi : = 4;
":", bir öznitelik listesinin başlangıcı olarak kabul edilir ve
"=". Burada boşluk önemli olmadığından, tümü boş bir nitelik listesi olarak ayrıştırılır,
bu nedenle yukarıdakilerin tümü eşdeğerdir ve daha iyi yazılır
benim $pi = 4;
çünkü boş bir liste için öznitelik işleme yapılmaz.
Olduğu gibi, bu, ":=" sessizce değiştirilmeden yeni bir belirteç olarak kullanılamayacağı anlamına geliyordu.
mevcut kodun anlamı. Bu nedenle, bu belirli form artık kullanımdan kaldırılmıştır ve
bir sözdizimi hatası haline gelir. Boş nitelik listelerinin olması kesinlikle gerekliyse
(örneğin, bir kod oluşturucu nedeniyle) ardından bir boşluk ekleyerek uyarıdan kaçının
"=" işaretinden önce.
"EVRENSEL->import()"
"UNIVERSAL->import()" yöntemi artık kullanımdan kaldırılmıştır. İçe aktarmayı geçmeye çalışmak
"EVRENSEL kullan" ifadesinin argümanları, kullanımdan kaldırma uyarısına neden olur.
Bir yapıya atlamak için "goto" kullanımı
Dış kapsamdan iç kapsama geçmek için "goto" kullanımı artık kullanımdan kaldırılmıştır. Bu
nadir kullanım durumu, kapsamların uygulanmasında sorunlara neden oluyordu.
İsimlere benzemeyen \N{name} içindeki özel karakter adları
Han{isim}", isim hemen her şey olabilir. Standart Unicode adları çok
sınırlı etki alanı, ancak özel bir ad çevirmeni, örneğin,
tamamen noktalama işaretlerinden oluşur. Artık kullanılmayan adlar yapmak kullanımdan kaldırılmıştır.
alfabetik bir karakterle başlar ve alfasayısal değildir veya
çok az sayıda başka karakter, yani boşluklar, kısa çizgiler, parantezler ve iki nokta üst üste. çünkü
"\N"nin eklenen anlamı (""\N" deneysel normal ifade kaçışına bakın), şuna benzeyen adlar
küme ayracı - kapalı niceleyiciler çalışmaz. Örneğin, "\N{3,4}" artık şu anlama gelir:
3 ila 4 yeni satır olmayanları eşleştirin; özel bir ad "3,4" oluşturulmadan önce.
Kullanımdan Kaldırılan Modüller
Aşağıdaki modüller gelecekteki bir sürümde çekirdek dağıtımdan kaldırılacaktır,
ve bunun yerine CPAN'dan kurulmalıdır. Bunları gerektiren CPAN dağıtımları
bunları önkoşullarına eklemelidir. Bu modül uyarılarının temel sürümleri
kullanımdan kaldırma uyarısı verir.
Perl'in paketlenmiş bir sürümünü tek başına veya daha büyük bir sistemin parçası olarak gönderirseniz,
o zaman çekirdek modül kullanımdan kaldırmalarının yansımalarını dikkatlice düşünmelisiniz. Sen
Varsayılan Perl yapınızı, bazıları veya tümü için paketlerle birlikte göndermeyi düşünebilirsiniz.
"Satıcı" veya "site" perl kitaplık dizinlerine yüklenen kullanımdan kaldırılmış modüller.
Bu, kullanımdan kaldırma uyarılarını engelleyecektir.
Alternatif olarak, yama yapmayı düşünebilirsiniz. lib/deprecate.pm sağlamak için
Paketleme sisteminize veya Perl dağıtımınıza özel kullanımdan kaldırma uyarıları,
paketleme sisteminizin veya dağıtımınızın aşamalı bir geçişi nasıl yönettiğiyle tutarlı
tek bir paketin kurulumunun verilenleri sağladığı bir sürümden
işlevsellik, sistem yöneticisinin bilmesi gereken sonraki bir sürüme
aynı işlevi elde etmek için birden çok paket kurun.
Söz konusu modülleri adresinden yükleyerek bu kullanımdan kaldırma uyarılarını susturabilirsiniz.
CPAN. Hepsinin en son sürümünü yüklemek için yüklemeniz yeterli
"Görev:: Kullanımdan Kaldırmalar::5_12".
Sınıf::ISA
Bölme::Sade
Kabuk
anahtar
Anahtar buggy ve kaçınılmalıdır. Perl'in yeni "verilen"/"ne zaman" bilgisini bulabilirsiniz.
uygun bir değiştirme özelliğine sahiptir. Daha fazlası için perlsyn'deki "Switch deyimleri"ne bakın
bilgiler.
$[ ataması
Özelliğin kullanımı: alt programlarda kilitlendi
Pragma öznitelikleriyle "kilitli" kullanımı
Pragma nitelikleriyle "benzersiz" kullanımı
Perl_pmflag
"Perl_pmflag" artık Perl'in genel API'sinin bir parçası değil. Şimdi çağırmak, bir
kullanımdan kaldırma uyarısı ve gelecekteki bir sürümde kaldırılacaktır. olarak listelenmesine rağmen
API'nin bir parçası, hiçbir zaman belgelenmedi ve yalnızca toke.c, ve öncesinde
5.10, regcomp.c. Çekirdekte, statik bir işlevle değiştirildi.
Çok sayıda Perl 4-dönem kitaplığı
termcap.pl, lekeli.pl, istatistik.pl, kabukkelimeler.pl, pwd.pl, open3.pl, open2.pl,
yenigetopt.pl, bak.pl, bul.pl, bulderinlik.pl, importenv.pl, ana bilgisayar adı.pl, getopts.pl,
getopt.pl, getcwd.pl, floş.pl, fastcwd.pl, istisnalar.pl, ctime.pl, tam.pl,
önbellek.pl, bigrat.pl, bigint.pl, bigfloat.pl, iddia.pl, kısaltma.pl, dotsh.pl, ve
zamansal.pl hepsi artık kullanımdan kaldırıldı. Daha önce, Perl'in geliştiricileri,
5.14.0 sürümü için Perl'in çekirdeğindeki bu kitaplıklar.
5.12.0'ın yayınlanmasından önceki son testler sırasında, birkaç geliştirici şunları keşfetti:
Bazıları Perl çekirdeğinin içinde olan bu eski kitaplıkları kullanan mevcut üretim kodu
kendisi. Buna göre, balkabağı onlara yürütmeyi durdurma kararı verdi. başlayacaklar
5.14.0 sürümünde kullanımdan kaldırılmaları konusunda uyarmak için
5.16.0 serbest bırakılması.
Unicode bakım
Perl'in geliştiricileri, Perl'i aşağıdakilerle senkronize olacak şekilde güncellemek için ortak bir çaba sarf ettiler.
en son Unicode standardı. Bunun için yapılan değişiklikler şunları içerir:
Perl artık her Unicode karakter özelliğini işleyebilir. Yeni belgeler, perluniprops,
Unihan olmayan tüm mevcut karakter özelliklerini listeler. Varsayılan olarak, Perl ifşa etmez
Unihan, kullanımdan kaldırılmış veya Unicode dahili özellikleri. Bunlarla ilgili daha fazla ayrıntı için aşağıya bakın;
podda bunları listeleyen ve neden açığa çıkmadıklarını açıklayan bir bölüm de var.
Perl artık düzenli yazmada "=" ve ":" kullanmanın Unicode bileşik stilini tam olarak desteklemektedir.
ifadeler: "\p{özellik=değer}" ve "\p{özellik:değer}" (ikisi de aynı anlama gelir
şey).
Perl şimdi, metinde parantezler arasındaki metin için Unicode gevşek eşleme kurallarını tam olarak desteklemektedir.
"\p{...}" yapıları. Ayrıca Perl, sayıların basamakları arasında alt çizgilere izin verir.
Perl artık özellikler ve özellik değerleri için tüm Unicode tanımlı eşanlamlıları kabul ediyor.
Bir Unicode mantıksal karakteriyle eşleşen "qr/\X/", daha iyi çalışacak şekilde genişletildi.
çeşitli Asya dilleri. Şimdi bir olarak tanımlanır genişletilmiş sesletim küme. (Görmek
<http://www.unicode.org/reports/tr29/>). Daha önce eşleşen ve anlamlı olan herhangi bir şey
kabul edilmeye devam edilecektir. Bunlara ek olarak:
· "\X", bir "CR LF" dizisini parçalamaz.
· "\X" artık "ZWJ" ve "ZWNJ" karakterlerini içeren bir diziyle eşleşecek.
· "\X" artık her zaman bir başlangıç işareti de dahil olmak üzere en az bir karakterle eşleşecek. işaretler
genellikle bir temel karakterden sonra gelir, ancak Unicode'da bunları
izolasyon ve "\X" şimdi bu durumu, örneğin bir satırın başında ele alacak,
veya bir "ZWSP"den sonra. Ve bu, "\X"in sahip olduğu şeylerle eşleşmediği kısımdır.
buna alışmak anlamsız. Eskiden, örneğin, saçma sapan
aksanlı bir LF durumu.
· "\X" artık bir (Korece) Hangul hece dizisiyle ve Tayca ve Lao ile eşleşecek
istisna durumlar.
Aksi takdirde, bu değişiklik etkilenmeyen diller için şeffaf olmalıdır.
Canonical_Combining_Class özelliğini kullanan "\p{...}" eşleşmeleri tamamen bozuldu
Perl'in önceki sürümleri. Şimdi düzgün çalışmalılar.
Perl 5.12'den önce, Unicode "Decomposition_Type=Compat" özelliği ve bir Perl uzantısı
aynı ada sahipti, bu da tüm doğru değerlerin eşleşmemesine yol açtı (en fazla
Birinde 100, diğerinde birkaç bin hata). Perl uzantısı artık
"Decomposition_Type=Uncanonical" olarak yeniden adlandırıldı (kısa: "dt=noncanon"). Aynısı var
daha önce amaçlandığı gibi anlam, yani tüm kanonik olmayanların birliği
Unicode "Compat" bunlardan sadece biri olan ayrıştırma türleri.
"\p{Decomposition_Type=Kanonik}" artık Hangul hecelerini içeriyor.
"\p{Büyük harf}" ve "\p{Küçük harf}" artık Unicode standardının olması gerektiğini söylediği gibi çalışıyor.
Bu, her birinin eskisinden birkaç karakter daha fazla eşleştiği anlamına gelir.
"\p{Cntrl}" artık "\p{Control}" ile aynı karakterlerle eşleşiyor. Bu artık olmayacağı anlamına geliyor
Özel Kullanım (gc=co), Vekiller (gc=cs) veya Biçim (gc=cf) kod noktalarını eşleştirin. Biçim
kod noktaları olası en büyük sorunu temsil eder. 36 tanesi hariç hepsi ya
resmi olarak kullanımdan kaldırılmış veya kullanılması kesinlikle tavsiye edilmemiştir. Bu 36 kişiden, muhtemelen
en yaygın olarak kullanılanlar yumuşak kısa çizgi (U+00AD) ve BOM, ZWSP, ZWNJ, WJ ve benzerleridir.
karakterler, artı çift yönlü kontroller.
"\p{Alfa}" artık "\p{Alfabetik}" ile aynı karakterlerle eşleşiyor. 5.12'den önce, Perl'in
tanım, atlanırken gerçekten alfa olmayan (tüm işaretler) bir dizi şeyi içeriyordu
olan çoktu. "\p{Alnum}" ve "\p{Word}" tanımları Alpha'nın tanımına bağlıdır
ve buna göre değişti.
"\p{Kelime}" artık kesirler gibi sözcük dışı karakterlerle yanlış şekilde eşleşmiyor.
"\p{Print}" artık satır kontrol karakterleriyle eşleşmiyor: Tab, LF, CR, FF, VT ve NEL.
Bu, onu standartlar ve belgelerle uyumlu hale getirir.
"\p{XDigit}" artık "\p{Hex_Digit}" ile aynı karakterlerle eşleşiyor. Bunun anlamı şudur:
şu anda eşleştiği karakterlere ek olarak, "[A-Fa-f0-9]", 22 ile de eşleşecektir.
tam genişlik eşdeğerleri, örneğin U+FF10: FULLWIDTH DIGIT ZERO.
Numeric type özelliği, Unihan karakterlerini içerecek şekilde genişletildi.
Yeni bir Perl uzantısı var, 'Present_In' veya basitçe 'In' özelliği. Bu bir
Unicode Age özelliğinin uzantısıdır, ancak "\p{In=5.0}", kullanımı olan herhangi bir kod noktasıyla eşleşir.
Tespit edildi as of Unicode sürüm 5.0. "\p{Yaş=5.0}" yalnızca kod noktalarıyla eşleşir
eklendi tam versiyon 5.0.
Bir dizi özellik artık atanmamış kod noktaları için doğru değerlere sahiptir. NS
etkilenen özellikler Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type,
Hangul_Syllable_Type, Numeric_Type ve Line_Break.
Default_Ignorable_Code_Point, ID_Continue ve ID_Start özellikleri artık güncel
geçerli Unicode tanımları ile.
Perl'in önceki sürümleri, olması gereken bazı özellikleri hatalı bir şekilde açığa çıkardı.
Yalnızca dahili Unicode. Bunların normal ifadelerde kullanılması, etkinleştirilirse, artık şunları üretecektir:
kullanımdan kaldırma uyarı mesajı. Özellikler şunlardır: Diğer_Alfabetik,
Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend, Other_ID_Continue,
Other_ID_Start, Other_Lowercase, Other_Math ve Other_Uppercase.
Artık Perl'in bir perl üzerinde anladığı Unicode özelliklerini değiştirmek mümkündür.
kurulum temeli. Yukarıda belirtildiği gibi, belirli özellikler varsayılan olarak kapalıdır.
Bunlar, tüm Unihan özelliklerini içerir (CPAN modülü aracılığıyla erişilebilir olmalıdır).
Unicode::Unihan) ve Perl'in hiçbir zaman kullanmadığı herhangi bir kullanımdan kaldırılmış veya yalnızca Unicode dahili özelliği
maruz.
"lib/unicore/To" dizininde oluşturulan dosyalar artık daha net olarak işaretlenmiştir.
kararlı, uygulamalar tarafından doğrudan kullanılabilir. İçlerindeki yeni karma girişler, dosyanın biçimini verir.
daha kolay makine ayrıştırmasına izin veren normal girişler. Perl bu dosyada dosyalar üretebilir.
çoğu bastırılmış olsa da, herhangi bir özellik için dizin. için talimatları bulabilirsiniz.
perluniprops ile yazılanları değiştirmek.
Modüller ve Pragmat
Yeni Modüller ve Pragmat
"otodiy"
"autodie", "Ölümcül" modül için sözlük kapsamlı yeni bir alternatiftir. Paketlenmiş
sürüm 2.06_01. Bu sürümde, "autodie" olduğunda bir eval dizesi kullanmanın
aslında autodie davranışının çevreleyen kapsama sızmasına neden olabilir. Görmek
Daha fazla ayrıntı için autodie'de "HATALAR".
Perl çekirdeğine 2.06_01 sürümü eklendi.
"Sıkıştır::Ham::Bzip2"
Perl çekirdeğine 2.024 sürümü eklendi.
"aşırı yükleme"
"aşırı yükleme", bazıları veya tümü için aşırı yüklemeyi sözlüksel olarak devre dışı bırakmanıza veya etkinleştirmenize olanak tanır
işlemleri.
Perl çekirdeğine 0.001 sürümü eklendi.
"ebeveyn"
"üst", derleme zamanında temel sınıflarla bir ISA ilişkisi kurar. Bilişim Teknoloji
daha fazla istenmeyen davranış olmadan "taban" ın temel özelliğini sağlar.
Perl çekirdeğine 0.223 sürümü eklendi.
"Ayrıştır::CPAN::Meta"
Perl çekirdeğine 1.40 sürümü eklendi.
"VMS::DCLsym"
Perl çekirdeğine 1.03 sürümü eklendi.
"VMS::Stdio"
Perl çekirdeğine 2.4 sürümü eklendi.
"XS::APItest::KeywordRPN"
Perl çekirdeğine 0.003 sürümü eklendi.
Güncellenmiş Pragmat
"Taban"
2.13 sürümünden 2.15 sürümüne yükseltildi.
"bignum"
0.22 sürümünden 0.23 sürümüne yükseltildi.
"karakterler"
"charnames" artık Unicode'u içeriyor AdAliases.txt veritabanı dosyası. bu var
önceden olmayacak bazı ekstra "\N" karakter adları eklemenin etkisi
tanınan; örneğin, "\N{LATIN BÜYÜK HARF GHA}".
1.06 sürümünden 1.07 sürümüne yükseltildi.
"sürekli"
1.13 sürümünden 1.20 sürümüne yükseltildi.
"teşhis"
"diagnostics" artık dahili olarak %.0f biçimlendirmesini destekliyor.
"Teşhis" artık "Aralıkta (veya çevirmede) başlatılmamış değer kullanımı"nı bastırmıyor
uyarılar. [perl #71204]
1.17 sürümünden 1.19 sürümüne yükseltildi.
"özellik"
"Özellik"te, ":5.10" ve ":5.10.X" özellik paketlerinin anlamı değişti
biraz. Varsa, son bileşen (yani "X") basitçe yok sayılır. Bu yüklem
yeni özelliklerin genel olarak bakıma eklenmeyeceği varsayımıyla
Salıverme. Yani ":5.10" ve ":5.10.X" aynı etkiye sahiptir. Bu, bir değişiklik
5.10.0 için belgelenen davranış.
"özellik" artık "unicode_strings" özelliğini içeriyor:
"unicode_strings" özelliğini kullanın;
Bu pragma, büyük/küçük harf değiştirme işlemleri ("uc", "lc",
"ucfirst", "lcfirst") dahili UTF-8 bayrağına sahip olmayan dizelerde, ancak
128 ile 255 arasında tek baytlık karakterler içerir.
1.11 sürümünden 1.16 sürümüne yükseltildi.
"az"
"less" artık "less" alt sınıflarının seçmesine izin vermek için "stash_name" yöntemini içeriyor
zulalarını saklamak için %^H içinde.
0.02 sürümünden 0.03 sürümüne yükseltildi.
"lib"
0.5565 sürümünden 0.62 sürümüne yükseltildi.
"merhaba"
"mro" artık bir XS uzantısı olarak uygulanmaktadır. Belgelenen arayüz değişmedi.
Bazı "mro::" yöntemlerinin olduğu uygulama ayrıntısına dayanan kod
her zaman kullanılabilir "her iki parçayı da" tutar.
1.00 sürümünden 1.02 sürümüne yükseltildi.
"aşırı yükleme"
"aşırı yükleme" artık "qr" öğesinin aşırı yüklenmesine izin veriyor.
1.06 sürümünden 1.10 sürümüne yükseltildi.
"İş Parçacığı"
1.67 sürümünden 1.75 sürümüne yükseltildi.
"konular::paylaşılan"
1.14 sürümünden 1.32 sürümüne yükseltildi.
"sürüm"
"sürüm" artık bu bölümde daha önce açıklandığı gibi "Sürüm numarası biçimleri" için desteğe sahiptir.
belge ve kendi belgelerinde.
0.74 sürümünden 0.82 sürümüne yükseltildi.
"uyarılar"
"uyarılar", yeni bir "uyarılar::fatal_enabled()" işlevine sahiptir. Ayrıca yeni bir içerir
"illegalproto" uyarı kategorisi. Bunun için ayrıca bkz. "Yeni veya Değiştirilmiş Tanılama"
değiştirin.
1.06 sürümünden 1.09 sürümüne yükseltildi.
Güncellenmiş Modüller
"Arşiv::Çıkart"
0.24 sürümünden 0.38 sürümüne yükseltildi.
"Arşiv::Karan"
1.38 sürümünden 1.54 sürümüne yükseltildi.
"Özellik::İşleyiciler"
0.79 sürümünden 0.87 sürümüne yükseltildi.
"Otomatik Yükleyici"
5.63 sürümünden 5.70 sürümüne yükseltildi.
"B::Kısa"
0.74 sürümünden 0.78 sürümüne yükseltildi.
"B::Hata ayıklama"
1.05 sürümünden 1.12 sürümüne yükseltildi.
"B::Ayrıl"
0.83 sürümünden 0.96 sürümüne yükseltildi.
"B::Lint"
1.09 sürümünden 1.11_01 sürümüne yükseltildi.
"CGI"
3.29 sürümünden 3.48 sürümüne yükseltildi.
"Sınıf::ISA"
0.33 sürümünden 0.36 sürümüne yükseltildi.
NOT: "Class::ISA" kullanımdan kaldırılmıştır ve Perl'in gelecekteki bir sürümünden kaldırılabilir.
"Sıkıştır::Ham::Zlib"
2.008 sürümünden 2.024 sürümüne yükseltildi.
"CPAN"
1.9205 sürümünden 1.94_56 sürümüne yükseltildi.
"CPANPLUS"
0.84 sürümünden 0.90 sürümüne yükseltildi.
"CPANPLUS::Dist::Build"
0.06_02 sürümünden 0.46'ya yükseltildi.
"Veri :: Damper"
2.121_14 sürümünden 2.125'ya yükseltildi.
"DB_Dosyası"
1.816_1 sürümünden 1.820'ya yükseltildi.
"Devel::PPPort"
3.13 sürümünden 3.19 sürümüne yükseltildi.
"Sindirmek"
1.15 sürümünden 1.16 sürümüne yükseltildi.
"Özet::MD5"
2.36_01 sürümünden 2.39'ya yükseltildi.
"Özet::SHA"
5.45 sürümünden 5.47 sürümüne yükseltildi.
"Kodla"
2.23 sürümünden 2.39 sürümüne yükseltildi.
"İhracatçı"
5.62 sürümünden 5.64_01 sürümüne yükseltildi.
"ExtUtils::CBuilder"
0.21 sürümünden 0.27 sürümüne yükseltildi.
"ExtUtils::Komut"
1.13 sürümünden 1.16 sürümüne yükseltildi.
"ExtUtils::Sabit"
0.2 sürümünden 0.22 sürümüne yükseltildi.
"ExtUtils::Yükle"
1.44 sürümünden 1.55 sürümüne yükseltildi.
"ExtUtils::MakeMaker"
6.42 sürümünden 6.56 sürümüne yükseltildi.
"ExtUtils::Manifest"
1.51_01 sürümünden 1.57'ya yükseltildi.
"ExtUtils::ParseXS"
2.18_02 sürümünden 2.21'ya yükseltildi.
"Dosya::Getir"
0.14 sürümünden 0.24 sürümüne yükseltildi.
"Dosya yolu"
2.04 sürümünden 2.08_01 sürümüne yükseltildi.
"Dosya::Sıcaklık"
0.18 sürümünden 0.22 sürümüne yükseltildi.
"Filtre::Basit"
0.82 sürümünden 0.84 sürümüne yükseltildi.
"Filtre::Util::Ara"
1.07 sürümünden 1.08 sürümüne yükseltildi.
"Getopt::Uzun"
2.37 sürümünden 2.38 sürümüne yükseltildi.
"IO"
1.23_01 sürümünden 1.25_02 sürümüne yükseltildi.
"IO::Zlib"
1.07 sürümünden 1.10 sürümüne yükseltildi.
"IPC::Cmd"
0.40_1 sürümünden 0.54'ya yükseltildi.
"IPC::SysV"
1.05 sürümünden 2.01 sürümüne yükseltildi.
"Yerel::Maketext"
1.12 sürümünden 1.14 sürümüne yükseltildi.
"Yerel::Maketext::Basit"
0.18 sürümünden 0.21 sürümüne yükseltildi.
"Günlük::Mesaj"
0.01 sürümünden 0.02 sürümüne yükseltildi.
"Günlük::Mesaj::Basit"
0.04 sürümünden 0.06 sürümüne yükseltildi.
"Matematik::BigInt"
1.88 sürümünden 1.89_01 sürümüne yükseltildi.
"Matematik::BigInt::FastCalc"
0.16 sürümünden 0.19 sürümüne yükseltildi.
"Matematik::BigRat"
0.21 sürümünden 0.24 sürümüne yükseltildi.
"Matematik::Karmaşık"
1.37 sürümünden 1.56 sürümüne yükseltildi.
"Memoize"
1.01_02 sürümünden 1.01_03 sürümüne yükseltildi.
"MIME::Base64"
3.07_01 sürümünden 3.08'ya yükseltildi.
"Modül :: Oluştur"
0.2808_01 sürümünden 0.3603'ya yükseltildi.
"Modül::ÇekirdekListesi"
2.12 sürümünden 2.29 sürümüne yükseltildi.
"Modül::Yükle"
0.12 sürümünden 0.16 sürümüne yükseltildi.
"Modül::Yük::Koşullu"
0.22 sürümünden 0.34 sürümüne yükseltildi.
"Modül::Yüklendi"
0.01 sürümünden 0.06 sürümüne yükseltildi.
"Modül::Takılabilir"
3.6 sürümünden 3.9 sürümüne yükseltildi.
"Ağ::Ping"
2.33 sürümünden 2.36 sürümüne yükseltildi.
"SONRAKİ"
0.60_01 sürümünden 0.64'ya yükseltildi.
"Nesne :: Erişimci"
0.32 sürümünden 0.36 sürümüne yükseltildi.
"Paket::Sabitler"
0.01 sürümünden 0.02 sürümüne yükseltildi.
"PerlIO"
1.04 sürümünden 1.06 sürümüne yükseltildi.
"Bölme :: Ayrıştırıcı"
1.35 sürümünden 1.37 sürümüne yükseltildi.
"Bölme::Perldoc"
3.14_02 sürümünden 3.15_02 sürümüne yükseltildi.
"Bölme::Sade"
0.01 sürümünden 1.02 sürümüne yükseltildi.
NOT: "Pod::Plainer" kullanımdan kaldırılmıştır ve Perl'in gelecekteki bir sürümünden kaldırılabilir.
"Bölme::Basit"
3.05 sürümünden 3.13 sürümüne yükseltildi.
"Güvenli"
2.12 sürümünden 2.22 sürümüne yükseltildi.
"Kendiliğinden Yükleyici"
1.11 sürümünden 1.17 sürümüne yükseltildi.
"Depolanabilir"
2.18 sürümünden 2.22 sürümüne yükseltildi.
"Değiştirmek"
2.13 sürümünden 2.16 sürümüne yükseltildi.
NOT: "Anahtar" kullanımdan kaldırılmıştır ve Perl'in gelecekteki bir sürümünden kaldırılabilir.
"Sys::Syslog"
0.22 sürümünden 0.27 sürümüne yükseltildi.
"Terim::ANSIColor"
1.12 sürümünden 2.02 sürümüne yükseltildi.
"Terim::UI"
0.18 sürümünden 0.20 sürümüne yükseltildi.
"Ölçek"
1.25 sürümünden 1.25_02 sürümüne yükseltildi.
"Test:: Koşum"
2.64 sürümünden 3.17 sürümüne yükseltildi.
"Test::Basit"
0.72 sürümünden 0.94 sürümüne yükseltildi.
"Metin::Dengeli"
2.0.0 sürümünden 2.02 sürümüne yükseltildi.
"Metin::ParseWords"
3.26 sürümünden 3.27 sürümüne yükseltildi.
"Metin::Soundex"
3.03 sürümünden 3.03_01 sürümüne yükseltildi.
"Konu::Sıra"
2.00 sürümünden 2.11 sürümüne yükseltildi.
"Konu::Semafor"
2.01 sürümünden 2.09 sürümüne yükseltildi.
"Bağ ::RefHash"
1.37 sürümünden 1.38 sürümüne yükseltildi.
"Zaman::HiRes"
1.9711 sürümünden 1.9719 sürümüne yükseltildi.
"Zaman::Yerel"
1.18 sürümünden 1.1901_01 sürümüne yükseltildi.
"Zaman :: Parça"
1.12 sürümünden 1.15 sürümüne yükseltildi.
"Unicode::Harmanla"
0.52 sürümünden 0.52_01 sürümüne yükseltildi.
"Unicode::Normalleştir"
1.02 sürümünden 1.03 sürümüne yükseltildi.
"Win32"
0.34 sürümünden 0.39 sürümüne yükseltildi.
"Win32API::Dosya"
0.1001_01 sürümünden 0.1101'ya yükseltildi.
"XSLoader"
0.08 sürümünden 0.10 sürümüne yükseltildi.
çıkarıldı Modüller ve Pragmat
"attr"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 1.02 idi.
"CPAN::API::NASIL"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 'undef' idi.
"CPAN::ErtelenmişKod"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 5.50 idi.
"CPANPLUS::inc"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 'undef' idi.
"DCLsim"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 1.03 idi.
"ExtUtils::MakeMaker::bayt"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 6.42 idi.
"ExtUtils::MakeMaker::vmsish"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 6.42 idi.
"Stdio"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 2.3 idi.
"Test::Harness::Assert"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 0.02 idi.
"Test::Harness::Yineleyici"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 0.02 idi.
"Test::Güvenlik::Nokta"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 0.01 idi.
"Test::Harness::Sonuçlar"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 0.01 idi.
"Test :: Emniyet Kemeri :: Kayışlar"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 0.26_01 idi.
"Test::Harness::Util"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 0.01 idi.
"XSSymSet"
Perl çekirdeğinden kaldırıldı. Önceki sürüm 1.1 idi.
Onaylanmamış Modüller ve Pragmat
Yukarıdaki "Kullanımdan Kaldırılan Modüller"e bakın.
Dökümanlar
Yeni Dökümanlar
· perlhaiku, Haiku platformu için perl'in nasıl oluşturulacağına dair talimatlar içerir.
· perlmroapi, takılabilir Yöntem Çözümleme Emirleri için yeni arabirimi açıklar.
· perlperf, Richard Foley tarafından, performans kullanımına bir giriş sağlar ve
Perl programlarına özel referansla kullanılabilen optimizasyon teknikleri.
· perlrepository, aşağıdakileri kullanarak perl kaynağına nasıl erişileceğini açıklar. git sürüm kontrolü
sistem.
· perlpolicy, "Katılan modüllerle ilgili sosyal sözleşmeyi" başlangıçlara kadar genişletir
Perl taşıma ilkeleriyle ilgili bir belgenin.
Değişiklikler için Mevcut Dökümanlar
· Çeşitli büyük Değişiklikler* dosyalar (en son perl'de yapılan her değişikliği listeler)
18 yıl) kaldırılmış ve yerine küçük bir dosya olarak da adlandırılan Değişiklikler, Hangi
sadece aynı bilgilerin git sürüm kontrolünden nasıl çıkarılabileceğini açıklar
sistem.
· Taşıma/yama.pod esas olarak eski ile etkileşimde tanımlandığı gibi silindi
Artık kullanılmayan performans tabanlı depo. Hala alakalı bilgiler
perlrepository'e taşındı.
· "(EXPR) BLOCK else BLOCK" sözdizimi şimdi olduğu gibi geçerli olarak belgelenmiştir.
sözdizimi "olmadığı sürece (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK", gerçekte olmasına rağmen
ikincisini kullanmak, kaynak kodunuzun okunabilirliği için en iyi fikir olmayabilir.
· Belgelenmiş -X aşırı yüklemesi.
· "When()" dosyasının filetest operatörlerinin çoğunu özel olarak ele aldığı belgelenmiştir
· Sözdizimi değiştiricisi olarak "ne zaman" olarak belgelendi.
· 5005 konuyu açıklayan "Old Perl thread öğreticisi" elendi.
pod/perlthrtut.pod ithreads için yeniden işlenmiş aynı malzemedir.
· Önceki belgeleri düzeltin: v-string'ler kullanımdan kaldırılmaz
Sürüm nesneleri ile MODULE VERSION sözdizimini kullanmalarına ihtiyacımız var. Bu yama kaldırır
kullanımdan kaldırma bildirimi.
· Güvenlik iletişim bilgileri artık perlsec'in bir parçası.
· Temel belgelerin önemli bir kısmı, konuyu netleştirmek için güncellendi.
Perl'in Unicode işleme davranışı.
Kalan temel belgelerin çoğu, netlik için gözden geçirildi ve düzenlendi,
tutarlı dil kullanımı ve Tom Christiansen'in adının yazılışını düzeltmek.
· Pod spesifikasyonu (perlpodspec), spesifikasyonu şuraya getirmek için güncellendi:
Çoğu Pod sistemi tarafından zaten desteklenen modern kullanımla uyumludur. Bir parametre dizisi olabilir
şimdi bir "başlangıç/bitiş" bölgesindeki biçim adını izleyin. Bir metin içeren URI'lere bağlantılar
Açıklamaya artık izin veriliyor. "L<"bölüm">" kullanımı olarak işaretlendi
kullanımdan kaldırıldı.
· if.pm, koşullu yükleme almanın bir yolu olarak perlfunc'ta "use" içinde belgelenmiştir
"kullanım" etrafındaki örtük BEGIN bloğuna rağmen modüllerin sayısı.
· Perlvar.pod'daki $1 için belgeler netleştirildi.
· "\N{U+kod puan}" artık belgelenmiştir.
Seçilmiş Performans Donanımlar
· Yeni bir dahili önbellek, "isa()"nın genellikle daha hızlı olacağı anlamına gelir.
· "C3" Yöntemi Çözünürlük Sırasının uygulanması optimize edildi - doğrusallaştırma
tek kalıtımlı sınıflar için %40 daha hızlıdır. Çoklu performans
miras değişmez.
· "Yerel ayarı kullan" altında, yerel ayar ile ilgili bilgiler artık salt okunur değerlerde önbelleğe alınır,
"keys %hash" tarafından döndürülen liste gibi. Bu, "sıralama tuşları" gibi işlemleri yapar
%hash", "yerel ayarı kullan" kapsamında çok daha hızlı.
· Boş "DESTROY" yöntemleri artık çağrılmıyor.
· "Perl_sv_utf8_upgrade()" artık daha hızlı.
· Boş hash üzerindeki "anahtarlar" artık daha hızlı.
· "if (%foo)", "if (%foo tuşları)" değerinden daha hızlı olacak şekilde optimize edildi.
· Dizi tekrarlama operatörü ("$str x $num") artık $str olduğunda birkaç kat daha hızlıdır.
uzunluğu bir veya $num büyüktür.
· Bir diziyi geçersiz bağlamda ("@a = ters @a" örneğinde olduğu gibi) tersine çevirmek artık şu durumlarda gerçekleşir:
yer ve eskisinden daha hızlı birkaç büyüklük sırasıdır. Ayrıca
mümkün olduğunda var olmayan öğeleri koruyun, örneğin sihirli olmayan diziler veya bağlı olanlar için
"EXISTS" ve "DELETE" yöntemleriyle diziler.
Montaj ve yapılandırma İyileştirmeler
· perlapi, perlintern, perlmodlib ve perltoc artık tümü derleme zamanında oluşturuluyor,
sürümün bir parçası olarak gönderilmek yerine.
· "vendorlib" ve "vendorarch" aynıysa, @INC'ye yalnızca bir kez eklenirler.
· $Config{usedevel} ve C-seviyesi "PERL_USE_DEVEL" artık perl oluşturulmuşsa tanımlanmıştır
"-Dusedevel" ile.
· yapılandırma yığına karşı koruma sağlamak için "-fstack-protector" kullanımını sağlayacaktır-
derleyici destekliyorsa, yıkıcı saldırılar.
· yapılandırma şimdi yeniden giriş işlevleri için doğru prototipleri belirleyecek ve
C derleyicisi yerine C++ derleyicisi kullanıyorsanız "gconvert".
· Unix'te, git deposu içeren bir ağaçtan derlerseniz, yapılandırma
process, çıktısında görüntülenmek üzere, kontrol ettiğiniz taahhüt karmasını not edecektir.
"perl -v" ve "perl -V". İttirilmemiş yerel taahhütler otomatik olarak listeye eklenir.
"Perl -V" tarafından görüntülenen yerel yamalar.
· Perl artık SystemTap'in "dtrace" uyumluluk katmanını ve bağlantıyla ilgili bir sorunu destekliyor
"miniperl" bu süreçte düzeltildi.
· perldoc artık daha iyi davranış için "less" yerine "less -R" kullanıyor.
"groff"un yeni ANSI kaçış kodları kullanımı.
· "Perl -V" artık "USE_PERL_ATOF" derleme zamanı seçeneklerinin kullanıldığını bildiriyor ve
"USE_ATTRIBUTES_FOR_PERLIO".
· Düzleştirmenin bir parçası olarak ext, tüm platformlardaki tüm uzantılar tarafından inşa edilmiştir.
make_ext.pl. Bu, Unix'e özgü dahili/util/make_ext, VMS'ye özel
make_ext.com ve Win32'ye özgü win32/buildext.pl.
İç Değişiklikler
Perl'in her sürümü, günden güne etkilememesi gereken çok sayıda dahili değişiklik görür.
Ancak yine de Perl'in kaynak koduyla çalışan geliştiriciler için dikkate değer olabilir.
· C kaynak dosyasının başındaki JRR Tolkien alıntıları kontrol edildi ve uygun
Tom Christiansen'den gelen bir yama sayesinde alıntılar eklendi.
· Geleneksel olarak sistemde bulunan dual-life modüllerinin iç yapısı lib / ve
harici/ perl kaynağındaki dizinler önemli ölçüde değişti. Mümkünse ikili
canlandırılmış modüller çıkarıldı lib / ve harici/.
Perl'in geliştiricileri tarafından Perl çekirdeğinin bir parçası olarak sürdürülen çift ömürlü modüller artık canlı
in dist /. Esas olarak CPAN'da tutulan çift ömürlü modüller artık cpan/. Ne zaman
altında bulunan bir modüldeki bir hatayı bildirme cpan/, lütfen hata raporunuzu doğrudan gönderin
Perl'in hata izleyicisi yerine modülün hata izleyicisine veya yazarına.
· "\N{...}" artık daha iyi derleniyor, her zaman UTF-8 dahili temsilini zorluyor
Perl'in geliştiricileri, "\N{...}" ifadesinin tanınmasıyla ilgili birkaç sorunu düzeltti.
yapılar. Bunun bir parçası olarak, Perl, aşağıdakileri içeren herhangi bir skaler veya normal ifadeyi saklayacaktır.
"\N{isim}" veya "\N{U+kod puan}" UTF-8 formatında tanımında. (Bu doğruydu
önceden tüm "\N{ oluşumları içinisim}" bu özel bir çevirmen kullanmadı, ancak
şimdi her zaman doğrudur.)
· Perl_magic_setmglob artık globları biliyor, RT #71254'ü düzeltiyor.
· "SVt_RV" artık mevcut değil. RV'ler artık IV'lerde saklanmaktadır.
· "Perl_vcroak()" artık boş bir ilk argümanı kabul ediyor. Ayrıca, tam bir denetim yapıldı.
"NULL değil" derleyici ek açıklamalarının ve diğer birkaç dahili işlev için olanların
düzeltildi.
· Yeni makrolar "dSAVEDERRNO", "dSAVE_ERRNO", "SAVE_ERRNO", "RESTORE_ERRNO" eklendi
"errno" değişkeninin geçici olarak kaydedilmesini resmileştirmek için.
· "Perl_sv_insert"i güçlendirmek için "Perl_sv_insert_flags" işlevi eklendi.
· "Perl_newSV_type(type)" işlevi eklendi, "Perl_newSV()" işlevine eşdeğer
ardından "Perl_sv_upgrade(type)" gelir.
· "Perl_newSVpvn()" işlevine eşdeğer "Perl_newSVpvn_flags()" işlevi eklendi
ve ardından bayrakla ilgili eylemi gerçekleştirmek.
Şu anda iki bayrak biti desteklenmektedir.
· "SVf_UTF8" sizin için "SvUTF8_on()"u arayacaktır. (Bunun bir
UTF-8859'e göre ISO 1-8 karakter dizisi). Bir sarmalayıcı, "newSVpvn_utf8()"
bunun için kullanılabilir.
· "SVs_TEMP" artık yeni SV'de "Perl_sv_2mortal()" öğesini çağırıyor.
Ayrıca "newSVpvs_flags()" adlı sabit dizeleri alan bir sarmalayıcı da vardır.
· "Perl_croak_xs_usage" işlevi "Perl_croak"a sarmalayıcı olarak eklendi.
· Perl artık "PerlIO_find_layer" ve "PerlIO_list_alloc" işlevlerini dışa aktarır.
· "PL_na" çekirdek koddan silindi, yerini yerel STRLEN aldı
geçiciler veya "*_nolen()" çağrıları. Her iki yaklaşım da "PL_na"dan daha hızlıdır;
ithreads altındaki yorumlayıcı yapısına işaretçi referansı ve küresel bir
aksi halde değişken.
· "Perl_mg_free()", skaler üzerinde "SvMAGIC()" yoluyla erişilebilir belleği bırakmak için kullanılırdı.
Artık her bir sihir parçasını serbest bırakıldığında kaldırmak için bağlantılı listeyi günceller.
· İthreads altında, "PL_reg_curpm" içindeki normal ifade artık referans sayılır. Bu ortadan kaldırır
referans sayılmamakla başa çıkmak için birçok geçici çözüm.
· "Perl_mg_magical()" bazen yanlışlıkla "SvRMAGICAL()"'ı açardı. Bu oldu
düzeltildi.
· halka açık Dize değerinin sonunda "çöp" varsa IV ve NV bayrakları artık ayarlanmaz.
Bu davranış, değer varsa genel IV veya NV bayraklarını ayarlamamakla tutarlıdır.
türü için aralık dışında.
· "Nullav", "Nullcv", "Nullhv", "Nullop", "Nullsv" vb.
Çekirdek kodda "NULL" ve çift ömürlü olmayan modüller, "NULL" olanlar için daha net olduğu için
çekirdek koda aşina değil.
· Bir makro MUTABLE_PTR(p) eklendi, bu (bilgisiz) gcc'de atılmayacaktır
"const", bir "void *" döndürüyor. Makrolar "MUTABLE_SV(av)", "MUTABLE_SV(cv)" vb.
bu, "const" atılmadan "AV *" vb. Bu, uygun derlemeye izin verir-
çekirdekte "const" doğruluğunun zaman denetimi ve bazı hataların alınmasına yardımcı oldu
(şimdi düzeltildi).
· SV'leri yığına itmek için "mPUSHs()" ve "mXPUSHs()" makroları eklendi ve
onları öldürüyor.
· "mro_meta" özel yapısının kullanımı biraz değişti. Çekirdek dışında hiçbir şey
yine de buna doğrudan erişiyor olmalı.
· Yeni bir araç, Taşıma/expand-macro.pl eklendi, bu da bir C'nin nasıl olduğunu görmenizi sağlar.
önişlemci makrosu derlendiğinde genişletilir. denerken bu kullanışlıdır
perl bağırsakları olan makro cehennemi deşifre edin.
Test yapmak
Test yapmak iyileştirmeler
paralel testler
Çekirdek dağıtım artık regresyon testlerini Unix benzeri üzerinde paralel olarak çalıştırabilir.
platformlar. "Make test" çalıştırmak yerine, ortamınızda "TEST_JOBS" öğesini şu şekilde ayarlayın:
paralel olarak çalıştırılacak test sayısı ve "make test_harness" komutunu çalıştırın. Bourne benzeri bir
kabuk, bu yapılabilir
TEST_JOBS=3 make test_harness # Paralel olarak 3 test çalıştırın
Paralel make yerine bir ortam değişkeni kullanılır, çünkü
TAP::Harness, çelişkili olmayan bireysel test komut dosyalarını programlayabilmelidir
ve yardımcı programların kendileriyle etkileşime girmesini "yapmak" için standart bir arayüz yoktur.
iş planlayıcıları.
Şu anda bazı test komut dosyalarının paralel olarak çalıştırıldığında başarısız olabileceğini unutmayın (en önemlisi
"ext/IO/t/io_dir.t"). Gerekirse, yalnızca başarısız olan komut dosyalarını sırayla yeniden çalıştırın ve
başarısızlıkların kaybolup kaybolmadığına bakın.
Kablo demeti esnekliğini test edin
Artık "PERL5OPT" ve arkadaşlarınızı geçersiz kılmak mümkün. t/TEST
Test bekçisi
Başarısız olmaları durumunda sonsuza kadar askıda kalma potansiyeline sahip birkaç test, şimdi bir
Bir zaman aşımından sonra onları öldürecek olan "bekçi köpeği" işlevi,
"make test" ve "make test_harness" otomatik olarak tamamlanmak üzere çalışır.
Yeni Testler
Perl'in geliştiricileri çekirdeğe bir dizi yeni test ekledi. öğelere ek olarak
aşağıda listelenmiştir, CPAN'dan güncellenen birçok modül yeni testler içermektedir.
· Dil ve tercüman özelliklerinin olduğundan emin olmak için temel testlerde önemli temizlemeler
test edilmeden kullanılmazlar.
· "make test_porting" artık bir dizi önemli ön taahhüt kontrolü yapıyor.
Perl çekirdeği üzerinde çalışan herkes için kullanın.
· t/taşıma/podcheck.t tüm .pl'de bulunan POD'un iyi biçimliliğini otomatik olarak kontrol eder,
.pm ve .pod dosyaları MANIFEST, olan çift ömürlü modüller dışında
öncelikle Perl çekirdeğinin dışında tutulur.
· t/porting/manifest.t şimdi MANIFEST'te listelenen tüm dosyaların mevcut olduğunu test eder.
· t/op/while_readdir.t while döngüsündeki çıplak bir readdir'in $_ değerini ayarladığını test eder.
· t/comp/retainedlines.t hata ayıklayıcının "eval" öğesinden kaynak satırları koruyabildiğini kontrol eder.
· t/io/perlio_fail.t bozuk katmanların başarısız olup olmadığını kontrol eder.
· t/io/perlio_leaks.t PerlIO katmanlarının sızıntı yapmadığını kontrol eder.
· t/io/perlio_open.t bazı özel açık çalışma biçimlerinin olup olmadığını kontrol eder.
· t/io/perlio.t genel PerlIO testlerini içerir.
· t/io/pvbm.t dahili türler arasında beklenmeyen bir etkileşim olmadığını kontrol eder
"PVBM" ve "PVGV".
· t/mro/package_aliases.t takma ad varlığında mro'nun düzgün çalışıp çalışmadığını kontrol eder
paketler.
· t/op/dbm.t "dbmopen" ve "dbmclose" testleri.
· t/op/index_thr.t "indeks" ve iş parçacıklarının etkileşimini test eder.
· t/op/pat_thr.t ezoterik kalıpların ve ipliklerin etkileşimini test eder.
· t/op/qr_gc.t "qr" nın sızdırmadığını test eder.
· t/op/reg_email_thr.t normal ifade özyineleme ve iş parçacıklarının etkileşimini test eder.
· t/op/regexp_qr_embed_thr.t kalıpların etkileşimini gömülü "qr//" ile test eder ve
İş Parçacığı.
· t/op/regexp_unicode_prop.t Unicode özelliklerini normal ifadelerde test eder.
· t/op/regexp_unicode_prop_thr.t Unicode özelliklerinin etkileşimini test eder ve
İş Parçacığı.
· t/op/reg_nc_tie.t "Tie::Hash::NamedCapture" bağlı yöntemlerini test eder.
· t/op/reg_posixcc.t POSIX karakter sınıflarının tutarlı davranıp davranmadığını kontrol eder.
· t/op/re.t dışa aktarılabilir "yeniden" işlevlerini kontrol eder evrensel.c çalışır.
· t/op/setpgrpstack.t "setpgrp"nin çalışıp çalışmadığını kontrol eder.
· t/op/substr_thr.t "substr" ve iş parçacıklarının etkileşimini test eder.
· t/op/yükseltme.t yükseltme ve skaler atamanın işe yarayıp yaramadığını kontrol eder.
· t/uni/lex_utf8.t sözlükteki Unicode'un çalışıp çalışmadığını kontrol eder.
· t/uni/tie.t Unicode ve "kravat"ın çalışıp çalışmadığını kontrol eder.
· t/comp/final_line_num.t EOF'de satır numaralarının doğru olup olmadığını test eder
· t/comp/form_scope.t biçim kapsamını test eder.
· t/comp/line_debug.t "@{"_<$file"}" öğesinin çalışıp çalışmadığını test eder.
· t/op/filetest_t.t -t dosya testinin çalışıp çalışmadığını test eder.
· t/op/qr.t "qr" testleri.
· t/op/utf8cache.t utf8 önbelleğinin arızalarını test eder.
· t/re/uniprops.t unicodes "\p{}" normal ifade yapılarını test edin.
· t/op/filehandle.t uygun şekilde taşınabilir bazı filetest operatörlerini test edip etmediklerini kontrol eder.
özellikle nasıl yapıldığı konusunda yapılan bazı dahili değişikliklerin ışığında beklendiği gibi çalışın.
filehandler kutsanmış.
· t/op/time_loop.t Unix'in "2**63" değerinden kat kat daha büyük olduğu ve artık verilebilecek testler
"gmtime" ve "localtime" için, dahili bir taşmaya veya aşırı uzun bir
döngü.
Yeni or değişmiş Teşhis
Yeni Teşhis
· "-Dm" ile etkinleştirilen tanılamaya SV tahsis takibi eklendi. izleme
alternatif olarak, eğer etkinleştirilmişse, "PERL_MEM_LOG" mekanizması aracılığıyla çıktı alınabilir.
the perl ikili derlendi.
· Smartmatch çözünürlük izleme, yeni bir tanılama olarak eklendi. Etkinleştirmek için "-DM" kullanın
bunu.
· Yeni bir hata ayıklama bayrağı "-DB" artık altyordam tanımlarını atıyor ve yerine "-Dx" bırakıyor.
sözdizimi ağaçlarını boşaltmanın asıl amacı.
· Perl 5.12, daha iyi kod yazmanıza yardımcı olacak bir dizi yeni tanı mesajı sağlar.
Bu yeni mesajların ayrıntıları için perldiag'a bakın.
· "'%s' anahtar sözcüğünü etkileyen kötü eklenti"
· "gmtime(%.0f) çok büyük"
· "Lexing kodu, Latin-1 olmayan karakterleri Latin-1 girişine yerleştirmeye çalıştı"
· "Lexing kodu dahili hatası (%s)"
· "yerel zaman(%.0f) çok büyük"
· "Aşırı yüklenmiş referans referansı döndürmedi"
· "Aşırı yüklenmiş qr, bir REGEXP döndürmedi"
· "Perl_pmflag() kullanımdan kaldırıldı ve XS API'sinden kaldırılacak"
· "alt program tanımlandıktan sonra değer niteliği yok sayıldı"
Bu yeni uyarı, bir alt yordam aşağıdakilerden sonra değer olarak işaretlenmeye çalışıldığında verilir.
tanımlandı.
· Perl, "++" veya "--" değerleri değiştiremediği için sizi uyarır.
temsil sınırlarının ötesindedir.
Bu, yeni bir uyarı kategorisi kullanır: "kesinlik".
· "lc", "uc", "lcfirst" ve "ucfirst" undef geçtiğinde uyarır.
· ""Void bağlamında bir sabitin yararsız kullanımı" bölümünde sabiti göster"
· "'%s'den sonra prototip"
· "panik: sv_chop %s"
Bu yeni önemli hata, "Perl_sv_chop()" C rutini bir
skalerin dize arabelleğinde olmayan konum. Bunun nedeni şunlar olabilir:
buggy XS kodu ve bu noktada kurtarma mümkün değildir.
· "Yanlış biçimlendirilmiş UTF-8 \N tarafından döndürüldü" ölümcül hatası,
"charnames" işleyicisi, hatalı biçimlendirilmiş UTF-8'i döndürür.
· Bir dosya derlenirken çözülmemiş adlandırılmış bir karakter veya diziyle karşılaşılırsa
regex kalıbı sonra "\N{NAME} lexer tarafından çözülmeli" ölümcül hatası şimdi
üretilmiş. Bu, örneğin, tek tırnaklı bir bağlam kullanıldığında olabilir.
"$re = '\N{BOŞLUK}'; /$re/;". Sözlük yazarının nasıl yapabileceğine dair daha fazla örnek için perldiag'a bakın.
atlatmak.
· "\N{U+...} içinde geçersiz onaltılık sayı",
"..." ile temsil edilen karakter sabiti, geçerli bir onaltılık sayı değil.
· "\N"nin "[^\n]" şeklindeki yeni anlamı parantez içindeki bir karakter sınıfında geçerli değildir,
tıpkı "." gibi. bir karakter sınıfında özel anlamını kaybeder ve
ölümcül hata "\N bir karakter sınıfında adlandırılmış bir karakter olmalıdır: \N{...}".
· "\N{...}" içindeki "..." için neyin yasal olduğuna dair kurallar sıkılaştırıldı.
"..." alfabetik bir karakterle başlayıp bir ile devam etmedikçe
alfasayısal, tire, boşluk, parantez veya iki nokta üst üste kombinasyonunun ardından
"\N{...} içinde '%s' ile başlayan kullanımdan kaldırılan karakter(ler)" uyarısı artık yayınlanıyor.
· "Yalnızca \N{} tarafından döndürülen ilk karakterlerin kullanılması" uyarısı, aşağıdaki durumlarda verilir:
"charnames" işleyicisi, sınırı aşan bir karakter dizisi döndürür
kullanılabilecek karakter sayısıdır. Mesaj, hangi
karakterler kullanılmış ve atılmıştır.
değişmiş Teşhis
Bir dizi mevcut tanılama mesajı iyileştirildi veya düzeltildi:
· Yeni bir uyarı kategorisi "illegalproto", etraftaki uyarıların daha hassas bir şekilde kontrol edilmesini sağlar
fonksiyon prototipleri.
İki uyarı:
"%s için prototipte geçersiz karakter: %s"
"%s için '%c'den sonra prototip: %s"
"sözdizimi" üst düzey uyarılar kategorisinden yeni bir birinci düzeye taşındı
kategori, "yasadışıproto". Bu iki uyarı şu anda yayılan tek uyarıdır
geçersiz/geçersiz bir prototipin ayrıştırılması sırasında, artık kullanılabilir
'illegalproto' uyarısı yok;
sözdizimiyle ilgili diğer uyarıları değil, yalnızca bunları bastırmak için. uyarılar nerede
değiştirilen, yok sayılan veya karşılanmayan prototipler hala "prototip" kategorisindedir.
önce.
· ""%s" altyordamında derin özyineleme"
Artık bu uyarının derinlik eşiğini varsayılan değerden değiştirmek mümkündür.
100, yeniden derleyerek perl ikili, C ön işlemci makrosunu ayarlama
"PERL_SUB_DEPTH_WARN" istenen değere.
· "Prototipte geçersiz karakter" uyarısı artık yasa dışı bildirimlerde daha hassas
_'den sonraki karakterler
· mro birleştirme hata mesajları artık Algorithm::C3 tarafından üretilenlere çok benziyor.
· "%d sütununda tanınmayan %s karakteri" hata mesajının iyileştirilmesi
Hata mesajını "Tanınmayan karakter %s; <-- ile işaretlenmiş
%s<-- BURADA %d sütununun yanında. Bu, tespit etmeyi ve düzeltmeyi biraz daha basitleştirecektir.
şüpheli karakter
· Perl şimdi açıkça $'a işaret ediyor. aralıklar için başlatılmamış bir uyarıya neden olduğunda
skaler bağlam.
· "split" artık geçersiz bağlamda çağrıldığında uyarı veriyor.
· Çok az argümanla çağrılan "printf" tarzı işlevler artık uyarı verecek
"%s'de eksik argüman" [Perl #71000]
· Perl artık "her", "anahtar" veya
"değerler" bağımsız değişken olmadan kullanılır.
· "tell()" artık bir argüman olmadan çağrıldığında ve önceki dosya olmadığında düzgün şekilde başarısız oluyor
okundu.
"tell()" şimdi "-1" döndürür ve errno'yu "EBADF" olarak ayarlar, böylece 5.8.x'i geri yükler
davranışı.
· "aşırı yükleme" artık tekrarlanan 'aşırı yüklemeyi kullan' satırlarında yedeği kesin olarak kaldırmaz.
· POSIX::strftime() artık biçim dizesindeki Unicode karakterlerini işleyebilir.
· "Sözdizimi" kategorisi, yalnızca "kullanımdan kaldırılmış" olması gereken 5 uyarıdan kaldırıldı.
· Üç önemli "paketleme"/"paket açma" hata mesajı "panik: %s" olarak normalleştirildi
· "Unicode karakter geçersiz" ifadesi daha doğru olacak şekilde yeniden ifade edildi
Şimdi "Unicode olmayan karakter, değiş tokuşta yasa dışıdır" yazıyor ve perldiag
belgeler biraz genişletildi.
· Şu anda, "charnames" işleyicisinin kullandığı birkaç karakterden ilki hariç tümü
normal ifade deseninde parantez içinde kullanıldığında geri dönebilir atılır
sınıf. Bu olursa, "Yalnızca döndürülen ilk karakterin kullanılması" uyarısı
\N{} karakter sınıfında" verilecektir.
· "\N{}'de sağ ayraç eksik veya \N'den sonra çıkış yapılmamış sol ayraç.
ikincisi", Perl bir "\N{" ile karşılaşırsa ancak eşleşen bir "}" bulamazsa verilir.
Bu durumda Perl, yanlışlıkla atlanıp atlanmadığını veya "yeni satır olmayanla eşleşip eşleşmediğini" bilmiyor.
ardından "bir "{" ile eşleşme istendi. İkincisini varsayar çünkü bu aslında
diğer durumun aksine, yazılı olarak geçerli bir yorum. Öncekini kastediyorsan,
eşleşen sağ ayracı eklemeniz gerekir. İkincisi demek istediysen, susturabilirsin
yerine "\N\{" yazarak bu uyarıyı yapın.
· "gmtime" ve "localtime", güvenilir şekilde işleyebileceklerinden daha küçük sayılarla çağrılır
şimdi "gmtime(%.0f) çok küçük" ve "yerelzaman(%.0f) çok küçük" uyarılarını verecek.
Aşağıdaki teşhis mesajları kaldırıldı:
· "Kaçak biçimi"
· "%s çocuğunun ebeveynleri için %s paketi bulunamıyor"
Genel olarak bu uyarı, yalnızca diğer uyarılarla bağlantılı olarak üretilmiştir ve
kaldırılması, bir ISA arama optimizasyonunun eklenmesine izin verdi.
· "v-string kullanımda/gerektirme taşınabilir değil"
Yarar Değişiklikler
· h2ph şimdi, gcc'nin aramasına yeni eklenen "include-fixed" olarak da görünüyor
yolu.
· h2xs artık enum değerlerine makrolar gibi yanlış davranmıyor. Ayrıca artık C++'ı da yönetiyor
numaralandırmalarda stil yorumları ("//") düzgün şekilde.
· perl5db.pl artık "LVALUE" alt programlarını destekliyor. Ek olarak, hata ayıklayıcı şimdi
proxy sabit alt yordamlarını ve alt yordam saplamalarını doğru şekilde işler.
· perlbug şimdi yukarı akış hata izleyicisini yazdırmak için %Module::CoreList::bug_tracker kullanıyor
URL'ler. Bir kullanıcı, hata raporunun konusu olarak belirli bir modülü tanımlarsa ve
yukarı akış hata izleyicisi için URL'yi tahmin edebiliyoruz, perlbug şimdi bir
kullanıcıya, çekirdeğin CPAN sürümünü doğrudan kopyaladığını açıklayan mesaj ve
hatayı doğrudan yukarı akış yazarına bildirmek için URL'yi sağlayın.
perlbug mesajı gerçekten göndermediğinde artık "Mesaj gönderildi" bildirimi yapmıyor
· teşekkürler yazarlara ve bakımcılara hata dışı raporlar göndermek için yeni bir yardımcı programdır
Perl'in. Hata raporlarından başka bir şey almamak biraz moral bozucu olabilir. Perl 5.12 ise
sizin için iyi çalışıyor, lütfen deneyin teşekkürler. Geliştiricileri gülümsetecek.
· Perl'in geliştiricileri şuradaki hataları düzeltti: A2P içindeki "match()" operatörüyle ilgili
liste bağlamı. Bunlara ek olarak, A2P artık $[ değişkenini kullanan kod üretmez.
Seçilmiş Böcek Düzeltmeler
· U+0FFFF artık normal ifadelerde yasal bir karakterdir.
· pp_qr artık her zaman yeni bir normal ifade SV'si döndürür. RT #69852'yi çözer.
Optree'deki (önceden derlenmiş) normal ifadeye bir (nother) referansı döndürmek yerine,
kullanım reg_temp_kopya() bir kopyasını oluşturmak ve buna bir referans döndürmek için. Bu
Regexp::DESTROY'un zamanında çağrılmamasıyla ilgili sorunları çözer (
RT #69852) tarafından izlenen orijinal hata ve ayrıca normal ifadeleri kutsamayla ilgili hatalar ve
bilete eklenen yazışmalarda açıklandığı gibi normal ifadelere atama.
Ayrıca geri almamız gerektiği de ortaya çıkıyor. SvPVX() bir klonlamayı iple çektiğinde paylaşma
Regexp SV, çünkü ana_re, klonlanmış bir kopyası yerine NULL olarak ayarlanmıştır.
anne_re. Bu değişiklik, diğer bazı programlarda normal ifadeler ve iş parçacıklarıyla ilgili hataları düzeltebilir.
durumlar, ancak henüz ne testler ne de hata raporları herhangi bir sorun göstermedi, bu yüzden
aslında ulaşılması mümkün olan bir uç durum olmayabilir.
· Perl "-Dmad" ile oluşturulduğunda meydana gelen birkaç derleme hatası ve segfault düzeltildi.
· 5.11.2'de NYTProf'un savesrc seçeneğini bozan lexer API değişiklikleri için düzeltmeler.
· "-t" yalnızca bir TTY'ye bağlı dosya tanıtıcıları için TRUE döndürmelidir
"isatty()"nin Microsoft C sürümü, tüm karakter modu aygıtları için DOĞRU değerini döndürür,
dahil olmak üzere / Dev / null-style "nul" aygıt ve "lpt1" gibi yazıcılar.
· Parametre sırasında paniğe neden olan fafaffbaf işlemesinin neden olduğu bir gerileme düzeltildi
[Perl #70171] geçmek
· Yedek dosyaları olmadan yerinde düzenleme yapan sistemlerde, -i'*' artık
belgeler öyle diyor [Perl #70802]
· Sihirli bayrakları kaydetme ve geri yükleme artık salt okunur bayrağı kaybetmez.
· Hatalı biçimlendirilmiş sözdizimi "grep EXPR LIST" (eksik virgüle dikkat edin) artık ani hatalara neden olmuyor
ve tam başarısızlık.
· "qr{}" değişmez değerleriyle derlenen normal ifadeler, eşleştirilirken "$'" olarak doğru şekilde ayarlandı
tekrar.
· Adlandırılmış alt programların "sort" ile kullanılması artık veri yolu hatalarına yol açmamalıdır [perl #71076]
· Çok sayıda hata düzeltmesi, yeni eklenen Lexer API'sinin neden olduğu küçük sorunları yakalar.
· @_ ile akıllı maç bazen yanlış negatifler verdi. [perl #71078]
· $@ artık salt okunur bir değere atanabilir (hata olmadan veya yığını bozmadan).
· Etkin bir karşılaştırma alt programı içinden özyinelemeli olarak çağrılan "sıralama" artık neden olmuyor
birden çok kez çalıştırılırsa bir veri yolu hatası. [Perl #71076]
· Tie::Hash::NamedCapture::* hatalı girdiden geçilirse iptal olmaz (RT #71828)
· @_ ve $_ artık konuların altına sızmıyor (RT #34342 ve #41138, ayrıca #70602, #70974)
· Shebang satırındaki "-I" artık @INC'nin önüne belgelendiği gibi dizinler ekliyor ve olduğu gibi
Komut satırında belirtildiğinde "-I".
· "öldürme" artık sayısal olmayan işlem tanımlayıcılarında çağrıldığında ölümcül oluyor. Daha önce, bir
"undef" işlem tanımlayıcısı, işlem 0'ı sonlandırma isteği olarak yorumlanır.
POSIX sistemlerinde mevcut süreç grubunu sonlandıracaktır. Süreç tanımlayıcıları
her zaman tam sayılardır, sayısal olmayan bir işlemi öldürmek artık ölümcüldür.
· 5.10.0, ölçülebilir bir performansa neden olan bir optimizasyonu istemeden devre dışı bıraktı
@_ öğesinden işlev parametreleri atamak için sıklıkla kullanılan gibi liste atamasında bırakma.
Optimizasyon yeniden kuruldu ve performans gerilemesi düzeltildi. (Bu düzeltme
5.10.1'de de mevcuttur)
· "while (1) { map 1, 1 }" [RT #53038] ile ilgili bellek sızıntısı düzeltildi.
· PerlIO'daki bazı olası çekirdek dökümleri düzeltildi [RT #57322,54828].
· Hata ayıklayıcı artık değer altyordamlarıyla çalışır.
· Hata ayıklayıcının "m" komutu, sabitleri [RT #61222] tanımlayan modüllerde bozuldu.
· "crypt" ve dize tamamlayıcısı, bozulmamış argümanlar için kusurlu değerler döndürebilir [RT
Sayfa #59998].
· "-i".sonek komut satırı anahtarı artık kısıtlı kullanarak dosyayı yeniden oluşturur
izinleri, modunu orijinal dosyayla eşleşecek şekilde değiştirmeden önce. Bu, bir
potansiyel yarış durumu [RT #60904].
· Bazı Unix sistemlerinde, değer $? en üst bit kümesi ("$? & 128") bile olmazdı
alt çekirdek döküldüyse.
· Bazı koşullar altında, $^R yanlışlıkla tanımsız hale gelebilir [RT #57042].
· XS API'sinde, anahtarın nerede olduğu önceden hesaplanmış bir karma geçirildiğinde çeşitli karma işlevler
UTF-8, yanlış bir aramaya neden olabilir.
· XS kodu dahil XSUB.h önce perl.h derleme zamanı hatası verdi [RT #57176].
· "$object->isa('Foo')", "Foo" paketi mevcut olmasa bile false bildirir.
nesnenin @ISA'sı "Foo" içeriyordu.
· Yeni 5.10.0 mro kodunda @ISA'nın manipüle edilmesiyle tetiklenen çeşitli hatalar giderildi
bulundu ve sabitlendi.
· Referanslarda bit düzeyinde işlemler yorumlayıcıyı çökertebilir, örneğin "$x=\$y; $x |=
"foo"" [RT #54956].
· Değişim içeren desenler dahili UTF-8'e duyarlı olabilir
temsil, örneğin
benim $baytım = chr(192);
benim $utf8 = chr(192); utf8::yükseltme($utf8);
$utf8 =~ /$byte|X}/i; # 5.10.0'da başarısız oldu
· UTF8 ile kodlanmış Perl kaynak dosyalarında (yani, "utf8 kullanımı"nın etkin olduğu yerlerde), çift-
alıntılanan değişmez değer dizeleri "\xNN", "\0NNN" veya "\N{}" olduğunda bozulabilir
ardından sıra değeri 255'ten büyük olan değişmez bir karakter [RT #59908].
· "B::Deparse" çeşitli yapıları doğru şekilde ayrıştıramadı: "readpipe STRING" [RT
#62428], "CORE::require(STRING)" [RT #62488], "sub foo(_)" [RT #62484].
· "setpgrp"yi argümansız kullanmak perl yığınını bozabilir.
· "Değerlendirme"nin blok biçimi artık özellikle "Güvenli" ve "operasyonlar" tarafından yakalanabilir. Önceden
hatalı bir şekilde "eval" dizesi gibi ele alındı.
· 5.10.0'da, iki "[~" karakteri bazen akıllı eşleşme operatörü olarak ayrıştırıldı
("~~") [RT #63854].
· 5.10.0'da, kalıplardaki "*" niceleyici bazen "{0,32767}" [RT
#60034, #60464]. Örneğin, bu eşleşme başarısız olur:
("ab" x 32768) =~ /^(ab)*$/
· "shmget", 32 bit işletim sisteminde [RT #64] 63924 bit segment boyutuyla sınırlıydı.
· "Verilen" bir bloktan çıkmak için "sonraki" veya "son" kullanmak artık sahte bir uyarı üretmiyor
aşağıdaki gibi:
foo.pl satır 123'te son aracılığıyla verilen çıkış
· Bir küreye biçim atamak, biçimi bozabilir; Örneğin:
*bar=*foo{FORMAT}; # foo biçimi artık kötü
· Typeglob'u bir dizeye veya sayıya zorlamaya çalışmak, bir iddiaya neden olabilir
arıza. Artık doğru hata mesajı oluşturuldu, "GLOB'u $tür".
· "filetest 'access' kullan" altında, "-x" yanlış erişim modunu kullanıyordu. Bu oldu
sabit [RT #49003].
· Bir Unicode değeri döndüren bağlı bir skaler üzerindeki "uzunluk" ilkinde doğru olmaz
zaman. Bu düzeltildi.
· "tie" dizisinin içinde "tie" dizisi kullanmak SEGV olabilir. Bu düzeltildi. [RT
#51636]
· "PerlIOStdio_close()" içindeki bir yarış durumu belirlendi ve düzeltildi. Bu kullanılan
SEGV'ler de dahil olmak üzere çeşitli iş parçacığı sorunlarına neden olmak için.
· Paketi açmada, "()" gruplarının skaler bağlamda kullanımı dahili olarak bir liste yerleştiriyordu.
SEGV'ler de dahil olmak üzere çeşitli şekillerde ortaya çıkan tercüman yığını. Bu
şimdi düzeltildi [RT #50256].
· Magic "substr", "\&$x", "tie $x, $m" ve "chop" da iki kez çağrıldı. bunların hepsi var
sabitlendi.
· Örtük döngü içindeki geçici yığını temizlemek için bir 5.10.0 optimizasyonu
"s///ge", içindeki belirsiz hataların nedeni olduğu ortaya çıktığı için geri döndürüldü.
yorumlayıcının görünüşte ilgisiz bölümleri [commit ef0d4e17921ee3de].
· "elsif" içindeki uyarıların satır numaraları artık doğru.
· ".." operatörü, artık uçlarında veya yakınında olan aralıklarda doğru şekilde çalışır.
en küçük ve en büyük tam sayıların değerleri.
· "binmode STDIN, ':raw'" bazı platformlarda segmentasyon hatalarına yol açabilir. bu var
[RT #54828] düzeltildi.
· Tek tek bir hata, "index $str, ..." öğesinin etkin bir şekilde şu şekilde yürütüldüğü anlamına geliyordu:
"dizin "$str\0", ...". Bu düzeltildi [RT #53746].
· Normal ifadelerdeki adlandırılmış yakalamalarla ilişkili çeşitli sızıntılar düzeltildi [RT #57024].
· Bir karmaya zayıf bir referans sızar. Bu, "DBI" [RT #56908] etkiliyordu.
· Normal ifadede (?|) kullanılması segfault'a neden olabilir [RT #59734].
· Bir kapatma içinde UTF-8 "tr//" kullanılması segfault'a neden olabilir [RT #61520].
· "Perl_sv_chop()" çağrısı yapmak veya başka bir şekilde bir SV'yi yükseltmek, hizalanmamış bir
SPARC mimarisinde 64 bit erişim [RT #60574].
· 5.10.0 sürümünde, "inc_version_list", "5.10.*"'dan sonra hatalı bir şekilde listeleniyordu.
"5.8.*"; bu @INC arama sırasını etkiledi [RT #67628].
· 5.10.0'da, "a*" paketi, $tainted_value", kusurlu olmayan bir değer [RT #52552] döndürdü.
· 5.10.0'da "printf" ve "sprintf", ölümcül "panik" hatasına neden olabilir:
utf8_mg_pos_cache_update" UTF-8 dizelerini yazdırırken [RT #62666].
· 5.10.0 sürümünde, dinamik olarak oluşturulmuş bir "AUTOLOAD" yöntemi gözden kaçmış olabilir (yöntem
önbellek sorunu) [RT #60220,60232].
· 5.10.0 sürümünde, "kullanım özelliği" ve "//ee" kombinasyonu bir hafızaya neden olabilir.
sızıntı [RT #63110].
· Shebang ("#!") satırındaki "-C" satırında ayrıca belirtilmişse bir kez daha izin verilir.
Komut satırı. Shebang hattındaki "-C" eskiden sessiz bir operasyonsuzdu if o da yoktu
komut satırı, bu nedenle Perl 5.10.0 buna izin vermedi, bu da bazı komut dosyalarını bozdu. şimdi perl
ayrıca komut satırında olup olmadığını kontrol eder ve yalnızca [RT #67880] değilse ölür.
· 5.10.0'da, belirli yeniden giren düzenli ifade türleri çökebilir veya
aşağıdaki onaylama hatası [RT #60508]:
Assertion rx->sublen >= (s - rx->subbeg) + başarısız oldu
· Perl artık Unicode Karakter Veritabanından daha önce eksik olan dosyaları içeriyor.
· Perl artık anonim bir geçici dosya açarken "TMPDIR" ı onurlandırıyor.
Platform Özel Değişiklikler
Perl inanılmaz derecede taşınabilir. Genel olarak, bir platformun C derleyicisi varsa, birinin
Perl'i ona taşıdı (veya yakında olacak). Perl 5.12'nin destek içerdiğini duyurmaktan mutluluk duyuyoruz
birkaç yeni platform için. Aynı zamanda, bazı (çok) yaşlılara veda etme zamanı.
arkadaşlar.
Yeni Meydan Okumalar
Haiku
Perl'in geliştiricileri, Haiku'nun bakımcılarından gelen yamaları birleştirdi. Perl şimdi inşa etmeli
Haiku'da.
MirOS BSD'si
Perl şimdi MirOS BSD üzerine inşa etmelidir.
Durdurulan Meydan Okumalar
Alan / OS
nane
Zıvana MachTen
Güncellenmiş Meydan Okumalar
AIX
· Kaldırıldı libbsd AIX 5L ve 6.1 için. Yalnızca "flock()" kullanıldı libbsd.
· Kaldırıldı libgdbm AIX 5L ve 6.1 için libgdbm < 1.8.3-5 kurulu. bu libgdbm
AIX Toolbox ile isteğe bağlı bir paket olarak teslim edilir. Ne yazık ki
1.8.3-5'in altındaki sürümler bozuk.
· İpuçları değişiklikleri, AIX 4.2'nin yeniden çalışması gerektiği anlamına gelir.
cygwin
· Perl artık Cygwin 6 ve daha yeni sürümlerde IPv1.7'yı destekliyor.
· Cygwin'de şimdi DLL'den son sayıyı çıkarıyoruz. Bu davranış oldu
yıllardır cygwin.com yapısında. İpuçları dosyaları güncellendi.
Darwin (Mac OS X)
· Be_BY.CP1131 yerel ayarını Darwin 10'da (Mac OS X 10.6) test etmeyi atlayın, çünkü hala
adamcağız.
· Darwin 8'de hatalı yerel ayarları belirlemek için kullanılan normal ifadedeki uygunsuzlukları düzeltin ve
9 (sırasıyla Mac OS X 10.4 ve 10.5).
Ejderha Sineği BSD
· İplik kitaplığı seçimini düzeltin [Perl #69686]
FreeBSD
· İpuçları dosyaları artık FreeBSD 7'de doğru iş parçacığı kitaplıklarını tanımlar ve
sonra.
Irix
· Artık Irix 6.5 derleyicisinde tuhaf bir önişlemci hatası üzerinde çalışıyoruz: "cc -E -"
maalesef K&R moduna giriyor, ancak "cc -E file.c" yapmıyor.
NetBSD
· İpuçları artık 5.* sürümlerini desteklemektedir.
OpenVMS
· "-UDEBUGGING" artık VMS'de varsayılandır.
Sanki çağlar boyunca başka her yerde olmuş gibi. Ayrıca komut satırı yapın
-UDEBUGGING ve -DEBUGGING seçimi yapılandırma.com'da; tek önce
Bunu kapatmanın yolu, etkileşimli soruya cevaben hayır demekti.
· VMS'deki varsayılan boru arabelleği boyutu, 8192 bit sistemlerde 64 olarak güncellendi.
· $/ durumunda başarısız olan "PerlIO::skalar"ın bellek içi geçici dosyalarından okur
sayısal bir referansa ayarlandı (kayıt tarzı okumaları belirtmek için). Bu şimdi
düzeltildi.
· VMS artık "getgrgid"i destekliyor.
· VMS dosya adı işlemede birçok iyileştirme ve temizleme yapıldı ve
dönüşüm kodu.
· "PERL_VMS_POSIX_EXIT" mantıksal adının etkinleştirilmesi artık bir POSIX çıkış durumunu şurada kodlar:
GNV'nin bash kabuğu ve diğerleriyle daha iyi etkileşim için bir VMS koşul değeri
POSIX çıkış değerlerine bağlı olan yardımcı programlar. "$?" Bkz. ayrıntılar için perlvms'de.
· "File::Copy" artık VMS'de Unix uyumluluk modunu algılıyor.
Stratus VOS'u
· Stratus'taki çeşitli değişiklikler birleştirildi.
Symbian
· Artık Symbian S60 3.2 SDK ve S60 5.0 SDK desteği var.
Windows
· Perl 5.12, Windows 2000 ve sonrasını destekler. Eski sürümler için destekleyici kod
Windows sürümü hala dahildir, ancak bir sonraki geliştirme sırasında kaldırılacaktır
döngüsü.
· MinGW-w64 ile Perl oluşturmak için ilk destek artık mevcut.
· Perl.exe artık "trustInfo" ayarlarını belirtmek için bir bildirim kaynağı içerir.
Windows Vista ve sonrası. Bu ayar olmadan Windows Perl.exe bir şekilde
eski uygulama ve erişimi yeniden yönlendirme gibi çeşitli buluşsal yöntemleri uygulayın
korumalı dosya sistemi alanları ("Program Dosyaları" klasörü gibi) kullanıcılara
Uygun bir "izin reddedildi" hatası oluşturmak yerine "VirtualStore".
Bildirim kaynağı ayrıca Microsoft Common-Controls sürüm 6.0'ı da ister.
(Windows XP'de sunulan temalı kontroller). Win32::VisualStyles'a göz atın
eski tarz için temasız kontrollere geri dönmek için CPAN üzerindeki modül
uygulamaları.
· "-t" dosya testi operatörü artık yalnızca kütük tanıtıcısı bağlıysa true değerini döndürür.
bir konsol penceresi. Perl'in önceki sürümlerinde, herkes için true değerini döndürürdü
dahil olmak üzere karakter modu cihazları NUL ve LPT1.
· "-p" filetest operatörü artık düzgün çalışıyor ve Fcntl::S_IFIFO sabiti
Perl, Microsoft Visual C ile derlendiğinde tanımlanır. Önceki Perl sürümlerinde
"-p" her zaman yanlış bir değer döndürdü ve Fcntl::S_IFIFO sabiti değildi
tanımladı.
Bu hata Microsoft Visual C'ye özeldir ve yerleşik Perl ikili dosyalarını asla etkilemez
MinGW ile.
· Soket hata kodları artık daha yaygın olarak desteklenmektedir: POSIX modülü
POSIX::EWOULDBLOCK gibi sembolik adları ve soketin dizgeleştirilmesini tanımlayın
$ cinsinden hata kodları! şimdi de çalışıyor;
C:\>perl -MPOSIX -E "$!=POSIX::EWOULDBLOCK; $ deyin!"
Engellemeyen bir yuva işlemi hemen tamamlanamadı.
· sürü() şimdi $! cinsinden mantıklı hata kodları ayarlayacaktır. Önceki Perl sürümleri kopyalandı
$^E'nin değeri $!, bu da çok fazla kafa karışıklığına neden oldu.
· Seçme() artık tüm boş "fd_set"leri daha doğru bir şekilde destekliyor.
· '.\foo' ve '..\foo', "do" ile './foo' ve '../foo'dan farklı şekilde ele alındı
ve "gerektirir" [RT #63492].
· İyileştirilmiş mesaj penceresi işleme, "alarm" ve "öldürme" mesajlarının hiçbir
yarış koşulları altında daha uzun süre düşürülebilir.
· Perl'in yapı altyapısının çeşitli bitleri artık win32 satırına dönüştürülmemektedir.
yayın zamanında biter. Bu size zarar verirse, lütfen sorunu
perl ile birlikte verilen perlbug programı.
Bilinen Sorunları
Bu, 5.10.x'ten gerilemeler olan bazı önemli düzeltilmemiş hataların bir listesidir.
veya 5.8.x.
· Çalışan bir dosya varsa bazı CPANPLUS testleri başarısız olabilir. ../../cpanp-run-perl
derleme dizininizin dışında. Başarısızlık, sistemle ilgili bir sorun olduğu anlamına gelmemelidir.
gerçek işlevsel yazılım. Hata [RT #74188]'de zaten düzeltildi ve planlandı
perl-v5.12.1'e dahil edilmek üzere.
· "List::Util::first" sözcüksel bir $_ (tipik olarak tanıtılır) varlığında yaramazlık yapar
"my $_" ile veya dolaylı olarak "verilen" ile). Her yineleme için ayarlanan değişken
$_ paket değişkenidir, sözcüksel $_ [RT #67694] değil.
Blok alan işlevler sağlayan diğer modüllerde de benzer bir sorun ortaya çıkabilir.
gibi ilk argüman olarak
foo { ... $_ ...} liste
· Bazı normal ifadeler, alt iş parçacığında çalıştırıldığında, normal ifadelere kıyasla çok daha yavaş çalışabilir.
iş parçacığı desen [RT #55600] içine derlendi.
· ""\N{LATIN SMALL LIGATURE FF}" =~ /\N{LATIN KÜÇÜK HARF F}+/" gibi şeyler görünecek
çok uzun bir koşu döngüsüne girdiklerinde takılmak için [RT #72998].
· Birkaç hamal, Perl'in tüm test paketi çalıştırıldığında gizemli çökmeler olduğunu bildirdi.
belirli Windows 2000 sistemlerinde bir derlemeden sonra. Elle çalıştırıldığında, bireysel testler
iyi çalıştığı bildirildi.
baskı hatası
· Bu, aslında 5.10.0'da tanıtılan bir değişikliktir, ancak bundan atlanmıştır.
yayının perldelta'sıdır, bu yüzden onun yerine burada bahsedilmiştir.
"/m" değiştiricisinin ve "qr"nin işlenmesiyle ilgili bir hata düzeltmesi,
5.8.x ve 5.10.0 arasındaki davranış:
# 5.8.x'te eşleşiyor, 5.10.0'da eşleşmiyor
$re = qr/^bar/; "foo\nbar" =~ /$re/m;
Teşekkür
Perl 5.12.0, Perl 5.10.0'dan bu yana yaklaşık iki yıllık bir gelişmeyi temsil eder ve
750,000'den fazla yazardan 3,000'den fazla dosyada 200'den fazla değişiklik satırı içerir ve
taahhüt edenler.
Perl, canlı bir kullanıcı topluluğu sayesinde üçüncü on yılında gelişmeye devam ediyor
ve geliştiriciler. Aşağıdaki kişilerin iyileştirmelere katkıda bulunduğu bilinmektedir:
Perl 5.12.0 oldu:
Aaron Crane, Abe Timmerman, Abhijit Menon-Sen, Abigail, Adam Russell, Adriano Ferreira,
AEvar Arnfjoer` Bjarmason, Alan Grover, Alexandr Ciornii, Alex Davies, Alex Vandiver,
Andreas Koenig, Andrew Rodland, [e-posta korumalı], Andy Armstrong, Andy Dougherty, Jose
AUGUSTE-ETİENNE, Benjamin Smith, Ben Morrow, bharanee rathna, Bo Borgerson, Bo Lindbergh,
Brad Gilbert, Bram, Brendan O'Dea, brian d foy, Charles Bailey, Chip Salzenberg, Chris
'BinGO'lar' Williams, Christoph Lamprecht, Chris Williams, kromatik, Claes Jakobsson, Craig
A. Berry, Dan Dascalescu, Daniel Frederick Crisman, Daniel M. Quinlan, Dan Jacobson, Dan
Kogai, Dave Mitchell, Dave Rolsky, David Cantrell, David Dick, David Altın, David
Mitchell, David M. Syzdek, David Nicol, David Wheeler, Dennis Kaarsemaker, Dintelmann,
Peter, Dominic Dunlop, Dr.Ruud, Duke Leto, Enrico Sorcinelli, Eric Brine, Baba
Chrysostomos, Florian Ragwitz, Frank Wiegand, Gabor Szabo, Gene Sullivan, Geoffrey T.
Dairiki, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Graham Barr, Green, Paul,
Hans Dieter Pearcey, Harmen, H. Merijn Brand, Hugo van der Sanden, Ian Goodacre, Igor
Sutton, Ingo Weinhold, James Bence, James Mastros, Jan Dubois, Jari Aalto, Jarkko
Hietaniemi, Jay Hannah, Jerry Hedden, Jesse Vincent, Jim Cromie, Jody Belka, John E.
Malmberg, John Malmberg, John Peacock, RT aracılığıyla John Peacock, John P. Linderman, John
Wright, Josh ben Jore, Jos I. Boumans, Karl Williamson, Kenichi Ishigaki, Ken Williams,
Kevin Brintnall, Kevin Ryde, Kurt Starsinic, Leon Brocard, Lubomir Rintel, Luke Ross,
Marcel Gruenauer, Marcus Holland-Moritz, Mark Jason Dominus, Marko Asplund, Martin Hasch,
Mashrab Kuvatov, Matt Kraai, Matt S Trout, Max Maischein, Michael Breen, Michael Cartmell,
Michael G Schwern, Michael Witten, Mike Giroux, Milosz Tanski, Moritz Lenz, Nicholas
Clark, Nick Cleaton, Niko Tyni, Offer Kaye, Osvaldo Villalon, Paul Fenwick, Paul Gaborit,
Paul Green, Paul Johnson, Paul Marquess, Philip Hazel, Philippe Bruhat, Rafael Garcia-
Suarez, Rainer Tammer, Rajesh Mandalemula, Reini Urban, Renee Baecker, Ricardo Signes,
Ricardo SIGNES, Richard Foley, Rich Rauenzahn, Rick Delaney, Risto Kankkunen, Robert May,
Roberto C. Sanchez, Robin Barker, SADAHIRO Tomoyuki, Salvador Ortiz Garcia, Sam Vilain,
Scott Lanning, Sebastien Aperghis-Tramoni, Sergio Durigan Junior, Shlomi Fish, Simon
'çekirdek kodu' Schubert, Sisyphus, Slaven Rezic, Smylers, Steffen Mueller, Steffen Ullrich,
Stepan Kasal, Steve Hay, Steven Schubiger, Steve Peters, Tels, Doktor, Tim Bunce, Tim
Jenness, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tom Wyant, Tony Cook, Torsten
Schoenfeld, Tye McQueen, Vadim Konovalov, Vincent Pit, Hio YAMASHINA, Yasuhiro Matsumoto,
Yitzchak Scott-Thoennes, Yuval Kogman, Yves Orton, Zefram, Zsban Ambrus
Bu, sürüm kontrol geçmişinden otomatik olarak oluşturulduğu için ne yazık ki eksik.
Özellikle, (çok takdir edilen) katkıda bulunanların adlarını içermez.
Perl'in önceki sürümlerinde, Perl 5.12.0'ı daha iyi hale getirmeye yardımcı olan sorunları bildiren kişi. İçin
Perl'e tarihsel katkıda bulunanların daha eksiksiz bir listesi için lütfen "YAZARLAR" bölümüne bakın
Perl 5.12.0 dağıtımındaki dosya.
"Emekli" balkabağımız Nicholas Clark ve Rafael Garcia-Suarez, özel teşekkürü hak ediyor.
parlak ve önemli devam eden katkıları. Nicholas bizzat yazdı
30'dan beri yamaların %5.10.0'u. Rafael, yama yazarlığında %11 ile ikinci sırada yer alıyor, ancak
Başkaları tarafından yazılan yamaları uygulama konusunda uzun bir atışla ilk sırada yer alıyor ve %44'ünü zorluyor
5.10.0'dan bu yana bu kategoride taahhütte bulunur, genellikle
yama yazarları. Bu istatistikler hiçbir şekilde katkılarının tamamını içermemekte, ancak
kısacası onlarsız yapamazdık.
Bu sürümde yer alan değişikliklerin çoğu, aşağıdakilere dahil edilen CPAN modüllerinden kaynaklanmaktadır.
Perl'in çekirdeği. Perl'in gelişmesine yardımcı oldukları için tüm CPAN topluluğuna minnettarız.
Raporlama Bugs
Bir hata olduğunu düşündüğünüzü bulursanız, son zamanlarda yayınlanan makaleleri kontrol edebilirsiniz.
comp.lang.perl.misc haber grubu ve perl hata veritabanıhttp://rt.perl.org/perlbug/>.
adresinde de bilgi olabilirhttp://www.perl.org/>, Perl Ana Sayfası.
Bildirilmemiş bir hatanız olduğunu düşünüyorsanız, lütfen çalıştırın. perlbug program dahil
senin yayının. Hatanızı küçük ama yeterli bir test durumuna indirdiğinizden emin olun. senin hatan
"Perl -V" çıktısıyla birlikte rapor, [e-posta korumalı] olduğu
Perl taşıma ekibi tarafından analiz edildi.
Bildirdiğiniz hatanın güvenlikle ilgili sonuçları varsa, bu da onu uygunsuz kılar.
herkese açık olarak arşivlenmiş bir posta listesine gönderin, ardından lütfen
[e-posta korumalı]. Bu, kapalı bir abonelik arşivlenmemiş postaya işaret ediyor
etkinin değerlendirilmesine yardımcı olabilecek tüm temel sorumluları içeren liste
sorunları çözmek, bir çözüm bulmak ve yamaların piyasaya sürülmesini koordine etmeye yardımcı olmak
Perl'in desteklendiği tüm platformlarda sorunu azaltın veya düzeltin. lütfen sadece
bu adresi bağımsız modüller için değil, Perl çekirdeğindeki güvenlik sorunları için kullanın
CPAN'da dağıtılır.
onworks.net hizmetlerini kullanarak perl5120delta'yı çevrimiçi kullanın
