Jest to polecenie perl5101delta, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu darmowych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS
PROGRAM:
IMIĘ
perl5101delta - co nowego w perlu v5.10.1
OPIS
W tym dokumencie opisano różnice między wersją 5.10.0 a wersją 5.10.1.
Jeśli aktualizujesz z wcześniejszej wersji, takiej jak 5.8.8, najpierw przeczytaj plik perl5100delta,
który opisuje różnice między 5.8.8 a 5.10.0
Niezgodny Zmiany
Przełącznik oświadczenie zmiany
Obsługa złożonych wyrażeń za pomocą instrukcji switch „podane”/„kiedy”.
wzmocniony. Istnieją dwa nowe przypadki, w których „When” interpretuje teraz swój argument jako wartość logiczną,
zamiast wyrażenia używanego w inteligentnym dopasowaniu:
operatory typu flip-flop
Operatory przerzutników „..” i „…” są teraz oceniane w kontekście boolowskim, jak poniżej
ich zwykła semantyka; zobacz „Operatory zakresu” w perlop.
Zauważ, że podobnie jak w Perlu 5.10.0, „When (1..10)” nie będzie działać w celu sprawdzenia, czy dany
wartość jest liczbą całkowitą z zakresu od 1 do 10; zamiast tego powinieneś użyć „kiedy ([1..10])” (uwaga
odwołanie do tablicy).
Jednak w przeciwieństwie do wersji 5.10.0, ocena operatorów przerzutników w kontekście boolowskim
zapewnia, że może być teraz przydatny w przypadku „When()”, zwłaszcza przy implementacji bistabilnej
warunkach, jak w:
kiedy (/^=początek/ .. /^=koniec/) {
# Zrób coś
}
operator zdefiniowany lub
Wyrażenie złożone zawierające operator zdefiniowany-lub, na przykład „kiedy (wyrażenie1 //
wyrażenie2)” będzie traktowane jako wartość logiczna, jeśli pierwsze wyrażenie jest wartością logiczną. (To po prostu
rozszerza istniejącą regułę mającą zastosowanie do wyrażenia regularnego lub operatora, na przykład „when (expr1
|| wyrażenie2)".)
W następnej sekcji szczegółowo opisano więcej zmian wprowadzonych w semantyce inteligentnego dopasowania
operator, który naturalnie również modyfikuje zachowanie instrukcji switch, jeśli jest inteligentny
dopasowanie jest używane niejawnie.
Smart mecz zmiany
Zmiany do oparte na typie wysyłka
Operator inteligentnego dopasowania „~~” nie jest już przemienny. Zachowanie inteligentnego meczu teraz
zależy przede wszystkim od rodzaju argumentu prawej ręki. Co więcej, jego semantyka ma
w kilku przypadkach skorygowano w celu zapewnienia większej spójności lub użyteczności. Podczas gdy generał
zachowana jest kompatybilność wsteczna, należy zwrócić uwagę na kilka zmian:
· Odniesienia do kodu z pustym prototypem nie są już traktowane specjalnie. Oni są
przekazał argument podobny do innych odwołań do kodu (nawet jeśli zdecydował się go zignorować).
· „%hash ~~ sub {}” i „@array ~~ sub {}” sprawdzają teraz, czy podprogram zwraca wartość true
wartość dla każdego klucza skrótu (lub elementu tablicy), zamiast przekazywać całość
hash lub tablica jako odniesienie do podprogramu.
· Ze względu na naruszenie przemienności, odniesienia do kodu nie są już traktowane specjalnie
gdy pojawia się po lewej stronie operatora „~~”, ale jak każdy wulgarny skalar.
· „undef ~~ %hash” jest zawsze fałszywe (ponieważ „undef” nie może być kluczem w haszu). Żadne ukryte
konwersja na „” jest wykonywana (tak jak miało to miejsce w Perlu 5.10.0).
· „$scalar ~~ @array” teraz zawsze rozdziela inteligentne dopasowanie na elementy tablicy
szyk. To prawda, jeśli jeden element w @array sprawdza „$scalar ~~ $element”. To jest
uogólnienie starego zachowania, które sprawdzało, czy tablica zawiera
skalarny.
Pełna tabela wysyłkowa dla operatora inteligentnego dopasowania jest podana w „Inteligentne dopasowanie w
szczegóły” w Perlsyn.
Smart mecz i przeciążenie
Zgodnie z regułą wysyłania w oparciu o typ argumentu znajdujący się najbardziej po prawej stronie, gdy obiekt
przeciążenie „~~” pojawi się po prawej stronie operatora, pojawi się procedura przeciążenia
zawsze być wywoływane (z trzecim argumentem ustawionym na wartość true, zobacz Przeciążenie). Jednak kiedy
obiekt pojawi się po lewej stronie, procedura przeciążenia zostanie wywołana tylko wtedy, gdy
Argument skrajny na prawo jest prostym skalarem. W ten sposób dystrybucja inteligentnego dopasowania w poprzek
tablice nie są zepsute, podobnie jak inne zachowania o typach złożonych (coderefs,
skróty, wyrażenia regularne). Dlatego też autorzy procedur przeciążających dla inteligentnego dopasowania w większości muszą to robić
zajmuj się tylko porównywaniem ze skalarem i ewentualnie przeciążeniem stringifikacyjnym;
inne typowe przypadki będą automatycznie i konsekwentnie obsługiwane.
„~~” będzie teraz odmawiać pracy na obiektach, które go nie przeciążają (aby uniknąć polegania
na podstawowej strukturze obiektu). (Jeśli jednak obiekt przeciąża
stringification lub operatory numifikacji, a jeśli aktywna jest funkcja rezerwowa przed przeciążeniem, tak się stanie
zamiast tego, jak zwykle.)
Inne niezgodny zmiany
· Semantyka „użyj funkcji :5.10*” uległa niewielkiej zmianie. Patrz „Moduły i
Pragmata”, aby uzyskać więcej informacji.
· Używanie operatora inteligentnego dopasowania „~~” z obiektem, który występuje, powoduje teraz błąd wykonania
nie ma zdefiniowanego dla niego przeciążenia. (W ten sposób „~~” nie przerwie enkapsulacji przez
dopasowanie do wewnętrznej reprezentacji obiektu jako odniesienia).
· System kontroli wersji zastosowany przy opracowywaniu interpretera Perla
przełączono z Perforce na git. Jest to głównie problem wewnętrzny, który ma tylko wpływ
ludzie aktywnie pracujący nad rdzeniem Perla; ale może mieć niewielką widoczność zewnętrzną,
na przykład w niektórych szczegółach wyniku „perl -V”. Zobacz perlrepository, aby uzyskać więcej informacji
informacje.
· Wewnętrzna struktura katalogu „ext/” w źródle Perla została zmieniona
zreorganizowany. Ogólnie rzecz biorąc, moduł „Foo::Bar”, którego źródło było przechowywane w
wew/Foo/Bar/ znajduje się teraz pod ext/Foo-Bar/. Ponadto niektóre moduły zostały przeniesione
od lib / do wew/. Jest to wyłącznie zmiana w źródłowym archiwum tar i nie powinna powodować tego
różnica w porównaniu z kompilacją lub instalacją Perla, chyba że masz bardzo
dostosowany proces kompilacji, który wyraźnie opiera się na tej strukturze lub na jakich twardych kodach
„nonxs_ext” Konfigurowanie parametr. W szczególności ta zmiana nie jest domyślnie wykonywana
zmienić lokalizację wszelkich plików w końcowej instalacji.
· W ramach aktualizacji „Test::Harness” z wersji 2.x do 3.x, wersja eksperymentalna
Moduł „Test::Harness::Straps” został usunięty. Aby uzyskać więcej informacji, zobacz „Zaktualizowane moduły”.
detale.
· W ramach aktualizacji „ExtUtils::MakeMaker” pliki „ExtUtils::MakeMaker::bytes” i
Moduły „ExtUtils::MakeMaker::vmsish” zostały usunięte z tej dystrybucji.
· „Module::CoreList” nie zawiera już skrótu %:patchlevel.
· Ta zmiana jest właściwie zmianą wprowadzoną w wersji 5.10.0, ale została w niej pominięta
wydania perldelta, więc jest tu wspomniane zamiast tego.
Poprawka błędu związana z obsługą modyfikatora „/m” i „qr” spowodowała zmianę
zachowanie między 5.8.x a 5.10.0:
# pasuje do 5.8.x, nie pasuje do 5.10.0
$re = qr/^bar/; "foo\nbar" =~ /$re/m;
rdzeń Udoskonalenia
Unicode Postać Baza danych 5.1.0
Kopia bazy danych znaków Unicode zawarta w Perlu 5.10.1 została zaktualizowana do wersji
5.1.0 z 5.0.0. Widziećhttp://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes> dla
zauważalne zmiany.
A właściwy Interfejs dla wtykowy Metoda wykonania Rozkład Zamówienia
Od wersji Perl 5.10.1 dostępny jest nowy interfejs do podłączania i używania poleceń rozpoznawania metod
inne niż domyślne (najpierw liniowe wyszukiwanie w głąb). Dodano kolejność rozstrzygania metody C3
w wersji 5.10.0 został ponownie zaimplementowany jako wtyczka, bez zmiany interfejsu w przestrzeni Perla.
Więcej informacji można znaleźć w perlmroapi.
Kurs „przeciążenie” Pragma
Ta pragma pozwala leksykalnie wyłączyć lub włączyć przeciążenie dla niektórych lub wszystkich
operacje. (Yuval Kogman)
Parallel Testy
Dystrybucja podstawowa może teraz przeprowadzać testy regresyjne równolegle na platformach uniksowych.
Zamiast uruchamiać „make test”, ustaw „TEST_JOBS” w swoim środowisku na liczbę testów
aby działać równolegle i uruchom „make test_harness”. Można to zrobić na powłoce podobnej do Bourne'a
as
TEST_JOBS=3 make test_harness # Uruchom 3 testy równolegle
Używana jest zmienna środowiskowa zamiast samej metody równoległej, ponieważ TAP::Harness
musi mieć możliwość samodzielnego zaplanowania indywidualnych, niekolidujących ze sobą skryptów testowych i tak jest
brak standardowego interfejsu umożliwiającego „tworzenie” narzędzi umożliwiających interakcję z programami planującymi zadania.
Należy pamiętać, że obecnie niektóre skrypty testowe mogą nie działać równolegle (w szczególności
„ext/IO/t/io_dir.t”). Jeśli to konieczne, uruchom ponownie po kolei tylko niedziałające skrypty i zobacz
jeśli awarie znikną.
DTrace wsparcie
Dodano obsługę DTrace. Zobacz „Obsługa DTrace” w INSTALL.
Wsparcie dla „konfiguruj_wymagania” in CPAN moduł metadanych
Zarówno „CPAN”, jak i „CPANPLUS” obsługują teraz słowo kluczowe „configure_requires” w pliku „META.yml”
plik metadanych zawarty w najnowszych dystrybucjach CPAN. Umożliwia to dystrybucję
autorów do określenia wymagań wstępnych konfiguracji, które muszą zostać zainstalowane przed uruchomieniem
Makefile.PL or Zbuduj.PL.
Zobacz dokumentację „ExtUtils::MakeMaker” lub „Module::Build”, aby uzyskać więcej informacji na temat
określ „configure_requires” podczas tworzenia dystrybucji dla CPAN.
Moduły i Pragmatyczny
Nowości Moduły i Pragmatyczny
„automatycznie”
Jest to nowa alternatywa o zakresie leksykalnym dla modułu „Fatal”. W pakiecie
wersja to 2.06_01. Należy pamiętać, że w tej wersji użycie łańcucha eval, gdy występuje „autodie”.
w efekcie może spowodować wyciek zachowania autodie do otaczającego zakresu. Widzieć
„BŁĘDY” w autodie, aby uzyskać więcej szczegółów.
„Kompresuj::Raw::Bzip2”
Zostało to dodane do rdzenia (wersja 2.020).
"rodzic"
Ta pragma ustanawia relację ISA z klasami bazowymi w czasie kompilacji. To
zapewnia kluczową cechę „bazy” bez pełzania funkcji.
„Przeanalizuj::CPAN::Meta”
Zostało to dodane do rdzenia (wersja 1.39).
Pragmatyczny Zmiany
„atrybuty”
Aktualizacja z wersji 0.08 do 0.09.
„atrybuty”
Aktualizacja z wersji 1.02 do 1.03.
"baza"
Aktualizacja z wersji 2.13 do 2.14. Skontaktuj się z rodzicem w celu wymiany.
„wielki”
Aktualizacja z wersji 0.22 do 0.23.
„bignum”
Aktualizacja z wersji 0.22 do 0.23.
„wielki grat”
Aktualizacja z wersji 0.22 do 0.23.
„przydomki”
Aktualizacja z wersji 1.06 do 1.07.
Unicode NazwaAliasy.txt dodano plik bazy danych. Ma to wpływ
dodanie kilku dodatkowych nazw znaków „\N”, które wcześniej nie byłyby rozpoznawane;
na przykład „\N{ŁACIŃSKA WIELKA LITERA GHA}”.
"stały"
Aktualizacja z wersji 1.13 do 1.17.
"funkcja"
Znaczenie pakietów funkcji „:5.10” i „:5.10.X” uległo niewielkiej zmianie. The
ostatni komponent, jeśli istnieje (tj. „X”) jest po prostu ignorowany. Jest to uzależnione od
założenie, że nowe funkcje na ogół nie będą dodawane do wydań konserwacyjnych.
Zatem „:5.10” i „:5.10.X” mają identyczny efekt. To jest zmiana w zachowaniu
udokumentowane dla wersji 5.10.0.
"pola"
Zaktualizowano z wersji 2.13 do 2.14 (była to tylko zmiana wersji; nie było żadnych
zmiany funkcjonalne).
„lib”
Aktualizacja z wersji 0.5565 do 0.62.
"otwarty"
Aktualizacja z wersji 1.06 do 1.07.
"przeciążać"
Aktualizacja z wersji 1.06 do 1.07.
„przeciążenie”
Zobacz „Pragmę „przeciążania”” powyżej.
"wersja"
Aktualizacja z wersji 0.74 do 0.77.
Zaktualizowano Moduły
„Archiwum::Wyciąg”
Aktualizacja z wersji 0.24 do 0.34.
„Archiwum::Tar”
Aktualizacja z wersji 1.38 do 1.52.
„Atrybut::Obsługa”
Aktualizacja z wersji 0.79 do 0.85.
„Automatyczny moduł ładujący”
Aktualizacja z wersji 5.63 do 5.68.
„Autopodział”
Aktualizacja z wersji 1.05 do 1.06.
„B” Aktualizacja z wersji 1.17 do 1.22.
„B::Debugowanie”
Aktualizacja z wersji 1.05 do 1.11.
„B::Odejście”
Aktualizacja z wersji 0.83 do 0.89.
„B::Lint”
Aktualizacja z wersji 1.09 do 1.11.
„B::Odnośnik”
Aktualizacja z wersji 1.01 do 1.02.
"Reper"
Aktualizacja z wersji 1.10 do 1.11.
"Karp"
Aktualizacja z wersji 1.08 do 1.11.
„CGI”
Aktualizacja z wersji 3.29 do 3.43. (zawiera także „wartość_domyślną dla
menu_wyskakujące()” poprawka z 3.45).
„Kompresuj::Zlib”
Aktualizacja z wersji 2.008 do 2.020.
„CPAN”
Zaktualizowano z wersji 1.9205 do 1.9402. „CPAN::FTP” ma lokalną poprawkę, która zapobiega temu
zbyt gadatliwy w przypadku niepowodzenia pobierania.
„CPANPLUS”
Aktualizacja z wersji 0.84 do 0.88.
„CPANPLUS::Dist::Buduj”
Zaktualizowano z wersji 0.06_02 do 0.36.
„Cwd”
Zaktualizowano z wersji 3.25_01 do 3.30.
„Dane::Wyrzutnik”
Zaktualizowano z wersji 2.121_14 do 2.124.
"DB"
Aktualizacja z wersji 1.01 do 1.02.
„Plik_DB”
Zaktualizowano z wersji 1.816_1 do 1.820.
„Rozwój::PPPort”
Aktualizacja z wersji 3.13 do 3.19.
„Przegląd::MD5”
Zaktualizowano z wersji 2.36_01 do 2.39.
„Przegląd::SHA”
Aktualizacja z wersji 5.45 do 5.47.
„Uchwyt katalogu”
Aktualizacja z wersji 1.01 do 1.03.
„Wartość zrzutu”
Aktualizacja z wersji 1.12 do 1.13.
„DynaLoader”
Aktualizacja z wersji 1.08 do 1.10.
"Kodować"
Aktualizacja z wersji 2.23 do 2.35.
„Errno”
Aktualizacja z wersji 1.10 do 1.11.
"Eksporter"
Aktualizacja z wersji 5.62 do 5.63.
„ExtUtils::CBuilder”
Aktualizacja z wersji 0.21 do 0.2602.
„ExtUtils::Polecenie”
Aktualizacja z wersji 1.13 do 1.16.
„ExtUtils::Stała”
Ulepszono z 0.20 do 0.22. (Pamiętaj, że żadna z tych wersji nie jest dostępna w witrynie
CPAN.)
„ExtUtils::Osadź”
Aktualizacja z wersji 1.27 do 1.28.
„ExtUtils::Zainstaluj”
Aktualizacja z wersji 1.44 do 1.54.
„ExtUtils::MakeMaker”
Zaktualizowano z wersji 6.42 do 6.55_02.
Należy pamiętać, że „ExtUtils::MakeMaker::bytes” i „ExtUtils::MakeMaker::vmsish” zostały
usunięte z tej dystrybucji.
„ExtUtils::Manifest”
Zaktualizowano z wersji 1.51_01 do 1.56.
„ExtUtils::ParseXS”
Zaktualizowano z wersji 2.18_02 do 2.2002.
"Fatalny"
Aktualizacja z wersji 1.05 do 2.06_01. Zobacz także nową pragmę „autodie”.
„Plik::Nazwa bazowa”
Aktualizacja z wersji 2.76 do 2.77.
„Plik::Porównaj”
Aktualizacja z wersji 1.1005 do 1.1006.
„Plik::Kopiuj”
Aktualizacja z wersji 2.11 do 2.14.
„Plik::Pobierz”
Aktualizacja z wersji 0.14 do 0.20.
„Plik::Znajdź”
Aktualizacja z wersji 1.12 do 1.14.
"Ścieżka pliku"
Zaktualizowano z wersji 2.04 do 2.07_03.
„Plik::Spec”
Aktualizacja z wersji 3.2501 do 3.30.
„Plik::stat”
Aktualizacja z wersji 1.00 do 1.01.
„Plik::Temp”
Aktualizacja z wersji 0.18 do 0.22.
„Pamięć podręczna plików”
Aktualizacja z wersji 1.07 do 1.08.
„Uchwyt pliku”
Aktualizacja z wersji 2.01 do 2.02.
„Filtr::Prosty”
Aktualizacja z wersji 0.82 do 0.84.
„Filtr::Util::Zadzwoń”
Aktualizacja z wersji 1.07 do 1.08.
„Znajdź kosz”
Aktualizacja z wersji 1.49 do 1.50.
„Plik GDBM”
Aktualizacja z wersji 1.08 do 1.09.
„Getopt::Długi”
Aktualizacja z wersji 2.37 do 2.38.
„Hash::Util::FieldHash”
Aktualizacja z wersji 1.03 do 1.04. To naprawia wyciek pamięci.
„I18N::Sortuj”
Aktualizacja z wersji 1.00 do 1.01.
"O"
Zaktualizowano z wersji 1.23_01 do 1.25.
Dzięki temu tryb nieblokujący działa w systemie Windows w „IO::Socket::INET” [CPAN #43573].
„IO::Kompresja::*”
Aktualizacja z wersji 2.008 do 2.020.
„IO::Dir”
Aktualizacja z wersji 1.06 do 1.07.
„IO::Uchwyt”
Aktualizacja z wersji 1.27 do 1.28.
„IO::Gniazdo”
Zaktualizowano z wersji 1.30_01 do 1.31.
„IO::Zlib”
Aktualizacja z wersji 1.07 do 1.09.
„IPC::Cmd”
Zaktualizowano z wersji 0.40_1 do 0.46.
„IPC::Open3”
Aktualizacja z wersji 1.02 do 1.04.
„IPC::SysV”
Aktualizacja z wersji 1.05 do 2.01.
„lib”
Aktualizacja z wersji 0.5565 do 0.62.
„Lista::Utyl”
Aktualizacja z wersji 1.19 do 1.21.
„Ustawienia regionalne::Utwórz tekst”
Aktualizacja z wersji 1.12 do 1.13.
„Dziennik::Wiadomość”
Aktualizacja z wersji 0.01 do 0.02.
„Matematyka::BigFloat”
Aktualizacja z wersji 1.59 do 1.60.
„Matematyka::BigInt”
Aktualizacja z wersji 1.88 do 1.89.
„Matematyka::BigInt::FastCalc”
Aktualizacja z wersji 0.16 do 0.19.
„Matematyka::BigRat”
Aktualizacja z wersji 0.21 do 0.22.
"Matematyka::Złożona"
Aktualizacja z wersji 1.37 do 1.56.
„Matematyka::Trig”
Aktualizacja z wersji 1.04 do 1.20.
„Zapamiętaj”
Zaktualizowano z wersji 1.01_02 do 1.01_03 (tylko drobna zmiana w dokumentacji).
„Moduł::Kompiluj”
Zaktualizowano z wersji 0.2808_01 do 0.34_02.
„Moduł::CoreList”
Aktualizacja z wersji 2.13 do 2.18. To wydanie nie zawiera już pliku
%Module::CoreList::hash poziomu poprawki.
„Moduł::Załaduj”
Aktualizacja z wersji 0.12 do 0.16.
„Moduł::Załaduj::Warunkowy”
Aktualizacja z wersji 0.22 do 0.30.
„Moduł::Załadowany”
Aktualizacja z wersji 0.01 do 0.02.
„Moduł::Wtykowy”
Aktualizacja z wersji 3.6 do 3.9.
„Plik NDBM_”
Aktualizacja z wersji 1.07 do 1.08.
„Sieć::Ping”
Aktualizacja z wersji 2.33 do 2.36.
"NASTĘPNY"
Zaktualizowano z wersji 0.60_01 do 0.64.
„Obiekt::Akcesor”
Aktualizacja z wersji 0.32 do 0.34.
„OS2::REXX”
Aktualizacja z wersji 1.03 do 1.04.
„Pakiet::Stałe”
Aktualizacja z wersji 0.01 do 0.02.
„PerlIO”
Aktualizacja z wersji 1.04 do 1.06.
„PerlIO::przez”
Aktualizacja z wersji 0.04 do 0.07.
„Pod::Człowiek”
Aktualizacja z wersji 2.16 do 2.22.
„Pod::Parser”
Aktualizacja z wersji 1.35 do 1.37.
„Pod::Prosty”
Aktualizacja z wersji 3.05 do 3.07.
„Pod::Tekst”
Aktualizacja z wersji 3.08 do 3.13.
„POSIX”
Aktualizacja z wersji 1.13 do 1.17.
"Bezpieczna"
Uaktualniono z 2.12 do 2.18.
„Skalar::Utyl”
Aktualizacja z wersji 1.19 do 1.21.
„Wybierz oszczędzanie”
Uaktualniono z 1.01 do 1.02.
„Samoładowarka”
Uaktualniono z 1.11 do 1.17.
"Gniazdo elektryczne"
Uaktualniono z 1.80 do 1.82.
„Przechowywanie”
Uaktualniono z 2.18 do 2.20.
"Przełącznik"
Aktualizacja z wersji 2.13 do 2.14. Proszę zapoznać się z sekcją „Wycofanie”.
"Symbol"
Aktualizacja z wersji 1.06 do 1.07.
„Sys::Syslog”
Aktualizacja z wersji 0.22 do 0.27.
„Termin::ANSIColor”
Aktualizacja z wersji 1.12 do 2.00.
„Termin::ReadLine”
Aktualizacja z wersji 1.03 do 1.04.
„Termin::UI”
Aktualizacja z wersji 0.18 do 0.20.
„Test::Uprząż”
Aktualizacja z wersji 2.64 do 3.17.
Należy pamiętać, że jednym ze skutków ubocznych aktualizacji z wersji 2.x do 3.x jest to, że jest ona eksperymentalna
Moduł „Test::Harness::Straps” (i obsługujące go „Assert”, „Iterator”, „Point” i
moduły „Wyniki”) zostały usunięte. Jeśli nadal tego potrzebujesz, są one dostępne
w (nieutrzymywanej) dystrybucji „Test-Harness-Straps” w CPAN.
„Test::Prosty”
Aktualizacja z wersji 0.72 do 0.92.
„Tekst::Przeanalizuj słowa”
Aktualizacja z wersji 3.26 do 3.27.
„Tekst::Tabulacje”
Aktualizacja z wersji 2007.1117 do 2009.0305.
"Zawijanie tekstu"
Aktualizacja z wersji 2006.1117 do 2009.0305.
„Wątek::Kolejka”
Aktualizacja z wersji 2.00 do 2.11.
„Wątek::Semafor”
Aktualizacja z wersji 2.01 do 2.09.
„wątki”
Aktualizacja z wersji 1.67 do 1.72.
„wątki::udostępnione”
Aktualizacja z wersji 1.14 do 1.29.
„Tie::RefHash”
Aktualizacja z wersji 1.37 do 1.38.
„Krawat::StdHandle”
Ma to zmiany w dokumentacji i po raz pierwszy przypisano jej wersję:
Wersja 4.2.
"Czas::HiRes"
Aktualizacja z wersji 1.9711 do 1.9719.
„Czas::Lokalny”
Aktualizacja z wersji 1.18 do 1.1901.
"Czasomierz"
Aktualizacja z wersji 1.12 do 1.15.
„Unicode::Normalizuj”
Aktualizacja z wersji 1.02 do 1.03.
„Unicode::UCD”
Aktualizacja z wersji 0.25 do 0.27.
„charinfo()” działa teraz na punktach kodowych Unified CJK dodanych do późniejszych wersji Unicode.
„casefold()” ma zwrócone nowe pola, aby zapewnić zarówno prostszy interfejs, jak i
wcześniej brakujących informacji. Stare pola zostaną zachowane w wersji wstecznej
zgodność. Zwracane są teraz informacje o punktach kodowych specyficznych dla języka tureckiego.
Dokumentacja została poprawiona i rozszerzona.
"UNIWERSALNY"
Aktualizacja z wersji 1.04 do 1.05.
„Win32”
Aktualizacja z wersji 0.34 do 0.39.
„Win32API::Plik”
Zaktualizowano z wersji 0.1001_01 do 0.1101.
„XSLoader”
Aktualizacja z wersji 0.08 do 0.10.
Użyteczność Zmiany
godz.2 godz
Teraz szuka także opcji „include-fixed”, która jest najnowszym dodatkiem do ścieżki wyszukiwania gcc.
h2xs
Nie traktuje już niepoprawnie wartości wyliczeniowych jak makra (Daniel Burr).
Teraz poprawnie obsługuje stałe stylu C++ („//”) w wyliczeniach. (Łatka od Rainera
Wykorzystano Weikusat; Daniel Burr również zaproponował podobną poprawkę).
perl5db.pl
Podprogramy „LVALUE” działają teraz w debugerze.
Debuger poprawnie obsługuje teraz podprogramy stałe proxy i fragmenty podprogramów.
dzięki
Perl 5.10.1 dodaje nowe narzędzie dzięki, który jest wariantem perlbug, ale dla
wysyłanie raportów niezawierających błędów do autorów i opiekunów Perla. Nie dostając nic poza
Raporty o błędach mogą być nieco demoralizujące: zobaczymy, czy to zmieni sytuację.
Nowości Dokumenty
perłhaiku
Zawiera instrukcje dotyczące budowania Perla dla platformy Haiku.
perlmroapi
Opisuje to nowy interfejs dla podłączanych zleceń rozstrzygania metod.
Perlperf
Dokument ten, autorstwa Richarda Foleya, stanowi wprowadzenie do stosowania performansu
oraz techniki optymalizacji, które można zastosować w szczególności w odniesieniu do Perla
programy.
perlrepozytorium
Opisuje, jak uzyskać dostęp do źródła Perla za pomocą odrzutowiec system kontroli wersji.
dzięki
To opisuje nowość dzięki użyteczność.
Zmiany do Istniejący Dokumenty
Różne duże pliki „Zmiany*” (które zawierają listę wszystkich zmian wprowadzonych w Perlu w ciągu ostatniego
18 lat) zostały usunięte i zastąpione małym plikiem, zwanym także „Zmianami”, który
po prostu wyjaśnia, w jaki sposób te same informacje można wyodrębnić z kontroli wersji git
pomimo napiętego harmonogramu
Plik Portowanie/łatanie.pod został usunięty, ponieważ opisywał głównie interakcję z
stare repozytorium oparte na Perforce, które jest obecnie przestarzałe. Informacje nadal aktualne
został przeniesiony do perlrepository.
perlapi, perlintern, perlmodlib i perltoc są teraz generowane raczej w czasie kompilacji
niż wysyłane w ramach wydania.
Wydajność Udoskonalenia
· Nowa wewnętrzna pamięć podręczna oznacza, że „isa()” będzie często szybsze.
· W sekcji „użyj ustawień regionalnych” informacje dotyczące ustawień regionalnych są teraz buforowane w wartościach tylko do odczytu,
takie jak lista zwrócona przez „klucze %hash”. Dzięki temu operacje takie jak „sort klucze
%hash” w zakresie „użyj ustawień regionalnych” znacznie szybciej.
· Puste metody „DESTROY” nie są już wywoływane.
instalacja sprzętu i systemu Ulepszenia
wew/ reorganizacja
Układ katalogów w ext został poprawiony. W szczególności wszystkie rozszerzenia są teraz
flat i na najwyższym poziomie, z „/” w nazwach ścieżek zastąpionych przez „-”, tak że
ext/Dane/Zrzut/ jest teraz ext/Data-Dumper/itp. Nazwy rozszerzeń zgodnie z opisem
do Konfigurowaniei zgodnie z raportem %Config::Config pod kluczami „dynamic_ext”,
„znane_rozszerzenia”, „nonxs_ext” i „static_ext” nie uległy zmianie i nadal używają „/”.
Dlatego ta zmiana nie będzie miała żadnego wpływu po zainstalowaniu Perla. Jednakże,
„Attribute::Handlers”, „Safe” i „mro” stały się teraz samodzielnymi rozszerzeniami, więc
jeśli uciekniesz Konfigurowanie z opcjami umożliwiającymi określenie dokładnej listy rozszerzeń do zbudowania, ty
będzie musiał to zmienić, aby to uwzględnić.
W wersji 5.10.2 planuje się usunięcie wielu modułów o podwójnym działaniu lib do
ext; znowu nie będzie to miało wpływu na zainstalowany Perl, ale będzie miało znaczenie, jeśli wywołasz
Konfigurowanie z gotową listą rozszerzeń do zbudowania.
systemu ulepszenia
Jeśli „vendorlib” i „vendorarch” są takie same, wówczas są dodawane do @INC tylko raz.
$Config{usedevel} i poziom C „PERL_USE_DEVEL” są teraz zdefiniowane, jeśli Perl jest zbudowany z
„-Dusedevel”.
Konfigurowanie umożliwi użycie „-fstack-protector”, aby zapewnić ochronę przed
ataki rozbijające, jeśli kompilator je obsługuje.
Konfigurowanie określi teraz prawidłowe prototypy funkcji ponownego wejścia i dla
„gconvert”, jeśli używasz kompilatora C++, a nie kompilatora C.
W systemie Unix, jeśli budujesz z drzewa zawierającego repozytorium git, proces konfiguracji
zanotuje skrót zatwierdzenia, który sprawdziłeś, do wyświetlenia na wyjściu „perl -v” i
„perl-V”. Niewysłane lokalne zatwierdzenia są automatycznie dodawane do listy lokalnych poprawek
wyświetlane przez „perl -V”.
Kompilacja ulepszenia
W ramach spłaszczania ext, wszystkie rozszerzenia na wszystkich platformach są zbudowane przez
make_ext.pl. Zastępuje to plik specyficzny dla Uniksa ext/util/make_ext, specyficzne dla VMS make_ext.com
i specyficzne dla Win32 win32/buildext.pl.
Platforma Konkretny Zmiany
Usunięto system AIX libbsd dla AIX 5L i 6.1. Tylko trzoda() był używany od libbsd.
Usunięto libgdbm dla AIX 5L i 6.1. The libgdbm jest dostarczany jako pakiet opcjonalny
z zestawem narzędzi AIX. Niestety wersja 64-bitowa jest uszkodzona.
Zmiany wskazówek oznaczają, że AIX 4.2 powinien znów działać.
Cygwin
W Cygwin usuwamy teraz ostatnią liczbę z biblioteki DLL. Takie było zachowanie w
kompilacja cygwin.com od lat. Pliki podpowiedzi zostały zaktualizowane.
FreeBSD
Pliki wskazówek identyfikują teraz prawidłowe biblioteki wątków we FreeBSD 7 i nowszych wersjach.
Irys
Pracujemy teraz nad dziwnym błędem preprocesora w kompilatorze Irix 6.5: „cc -E -”
niestety przechodzi w tryb K&R, ale „cc -E file.c” nie.
Haiku
Połączono poprawki od opiekunów Haiku. Perl powinien teraz bazować na innych rozwiązaniach
Haiku.
MiOS BSD
Perl powinien teraz opierać się na MirOS BSD.
NetBSD
Wskazówki obsługują teraz wersje 5.*.
Stratus VOS
Połączono różne zmiany ze Stratusa.
Symbian
Dostępna jest teraz obsługa pakietów Symbian S60 3.2 SDK i S60 5.0 SDK.
Win32
Ulepszona obsługa okien komunikatów oznacza, że komunikaty „alarm” i „kill” nie będą już wyświetlane
zostać upuszczony w warunkach wyścigowych.
VMS Odczyt plików tymczasowych w pamięci „PerlIO::scalar” kończył się niepowodzeniem, jeśli $/ było
ustawiony na odniesienie numeryczne (w celu wskazania odczytów w stylu rekordu). Zostało to już naprawione.
VMS obsługuje teraz „getgrgid”.
Wprowadzono wiele ulepszeń i usprawnień w obsłudze nazw plików VMS i
kod konwersji.
Włączenie nazwy logicznej „PERL_VMS_POSIX_EXIT” koduje teraz status wyjścia POSIX w formacie
Wartość warunku VMS dla lepszej interakcji z powłoką bash GNV i innymi narzędziami
które zależą od wartości wyjściowych POSIX. Zobacz „$?” w perlvms, aby uzyskać szczegółowe informacje.
Salected Bug Fixes
· Wersja 5.10.0 przypadkowo wyłączyła optymalizację, co spowodowało mierzalną wydajność
przypisanie listy rozwijanej, takie jak często używane do przypisywania parametrów funkcji z @_.
Optymalizacja została przywrócona, a spadek wydajności naprawiony.
· Naprawiono wyciek pamięci w „podczas gdy (1) { mapa 1, 1 }” [RT #53038].
· Naprawiono niektóre potencjalne zrzuty rdzeni w PerlIO [RT #57322,54828].
· Debuger działa teraz z podprogramami lvalue.
· Polecenie „m” debugera zostało uszkodzone w modułach definiujących stałe [RT #61222].
· Funkcja „crypt()” i uzupełnienie ciągu mogą zwracać zanieczyszczone wartości dla nieskażonych argumentów
[RT#59998].
· Przełącznik wiersza poleceń "-i.suffix" odtwarza teraz plik przy użyciu ograniczeń
uprawnień, przed zmianą trybu na zgodny z oryginalnym plikiem. Eliminuje to A
potencjalny stan wyścigu [RT #60904].
· W niektórych systemach Unix wartość w $? nie miałby nawet ustawionego górnego bitu („$? i 128”)
jeśli rdzeń podrzędny został zrzucony.
· W pewnych okolicznościach $^R może zostać błędnie niezdefiniowane [RT #57042].
· (XS) W różnych funkcjach skrótu, przekazywanie wstępnie obliczonego skrótu, gdy kluczem jest UTF-8
może skutkować błędnym wyszukiwaniem.
· (XS) Łącznie XSUB.h zanim perl.h dał błąd w czasie kompilacji [RT #57176].
· „$object->isa('Foo')” zgłosi wartość false, jeśli pakiet „Foo” nie istnieje, nawet jeśli
@ISA obiektu zawierało „Foo”.
· W nowym kodzie mro do wersji 5.10.0 zostały usunięte różne błędy, wywołane manipulacją @ISA
znalezione i naprawione.
· Operacje bitowe na referencjach mogą spowodować awarię interpretera, np. "$x=\$y; $x |=
„foo”” [RT #54956].
· Wzory zawierające naprzemienność mogą być wrażliwe na wewnętrzny kod UTF-8
reprezentacja np
mój $bajt = chr(192);
mój $utf8 = chr(192); utf8::upgrade($utf8);
$utf8 =~ /$bajt|X}/i; # nie powiodło się w wersji 5.10.0
· W plikach źródłowych Perla zakodowanych w UTF8 (tzn. tam, gdzie obowiązuje opcja „użyj utf8”), podwójnie
cytowane ciągi literałów mogą być uszkodzone w przypadku „\xNN”, „\0NNN” lub „\N{}”
po którym następuje znak dosłowny o wartości porządkowej większej niż 255 [RT #59908].
· „B::Deparse” nie udało się poprawnie zdeparsować różnych konstrukcji: „readpipe STRING” [RT
#62428], „CORE::require(STRING)” [RT #62488], „sub foo(_)” [RT #62484].
· Użycie "setpgrp()" bez argumentów może spowodować uszkodzenie stosu Perla.
· Blokowa forma „eval” jest teraz specjalnie przechwytywana przez „Safe” i „ops”.
Poprzednio był błędnie traktowany jak ciąg znaków „eval”.
· W wersji 5.10.0 dwa znaki „[~” były czasami analizowane jako operator inteligentnego dopasowania
(„~~”) [RT #63854].
· W wersji 5.10.0 kwantyfikator „*” we wzorach był czasami traktowany jako „{0,32767}” [RT
#60034, #60464]. Na przykład to dopasowanie zakończy się niepowodzeniem:
(„ab” x 32768) =~ /^(ab)*$/
· „shmget” został ograniczony do 32-bitowego rozmiaru segmentu w 64-bitowym systemie operacyjnym [RT #63924].
· Użycie „następny” lub „ostatni” w celu wyjścia z „danego” bloku nie powoduje już fałszywego ostrzeżenia
jak poniżej:
Wyjście podane ostatnim na foo.pl linia 123
· W systemie Windows „.\foo” i „..\foo” były traktowane inaczej niż „./foo” i „../foo”
poprzez „zrób” i „wymagaj” [RT #63492].
· Przypisanie formatu do globu może spowodować uszkodzenie formatu; np:
*bar=*foo{FORMAT}; # format foo jest teraz zły
· Próba wymuszenia typu typeglob na ciąg lub liczbę może spowodować asercję
awaria. Zostanie wygenerowany poprawny komunikat o błędzie: „Nie można wymusić GLOB $typ”.
· W opcji „użyj testu pliku 'dostęp'” opcja „-x” używała niewłaściwego trybu dostępu. To było
naprawiono [RT #49003].
· „Długość” na powiązanym skalarze, który zwrócił wartość Unicode, nie byłaby początkowo poprawna
czas. Zostało to naprawione.
· Użycie tablicy „tie” wewnątrz tablicy „tie” może spowodować SEGV. Zostało to naprawione. [RT
#51636]
· Zidentyfikowano i naprawiono sytuację wyścigu wewnątrz „PerlIOStdio_close()”. To używane
powodować różne problemy z wątkami, w tym SEGV.
· W przypadku „rozpakowania” użycie grup „()” w kontekście skalarnym polegało na wewnętrznym umieszczeniu listy
stos tłumacza, który objawiał się na różne sposoby, w tym poprzez SEGV. To jest
teraz naprawione [RT #50256].
· Magic został wywołany dwukrotnie w "substr", "\&$x", "tie $x, $m" i "chop". Te mają wszystko
zostało naprawione.
· Optymalizacja 5.10.0 w celu usunięcia tymczasowego stosu w ukrytej pętli
„s///ge” zostało przywrócone, ponieważ okazało się, że jest przyczyną niejasnych błędów w
pozornie niezwiązane ze sobą części interpretera [commit ef0d4e17921ee3de].
· Numery linii ostrzeżeń wewnątrz „elsif” są teraz prawidłowe.
· Operator „..” działa teraz poprawnie z zakresami, których końce znajdują się na lub blisko
wartości najmniejszej i największej liczby całkowitej.
· „binmode STDIN, ':raw'” może prowadzić do błędów segmentacji na niektórych platformach. To ma
zostało naprawione [RT #54828].
· Błąd typu off-by-one oznaczał, że "indeks $str, ..." był faktycznie wykonywany jako
„indeks „$str\0”,…”. Zostało to naprawione [RT #53746].
· Naprawiono różne wycieki związane z nazwanymi przechwytywaniami w wyrażeniach regularnych [RT #57024].
· Wyciekłoby słabe odniesienie do skrótu. Miało to wpływ na „DBI” [RT #56908].
· Użycie (?|) w wyrażeniu regularnym może spowodować błąd segfault [RT #59734].
· Użycie UTF-8 „tr//” w zamknięciu może spowodować błąd segfault [RT #61520].
· Wywołanie „sv_chop()” lub inna aktualizacja SV może skutkować nierównaną wersją 64-bitową
dostęp do architektury SPARC [RT #60574].
· W wersji 5.10.0 „inc_version_list” będzie niepoprawnie wyświetlać „5.10.*” po
„5.8.*”; miało to wpływ na kolejność wyszukiwania @INC [RT #67628].
· W wersji 5.10.0 „pakiet „a*”, $tainted_value” zwrócił niezanieczyszczoną wartość [RT #52552].
· W wersji 5.10.0 „printf” i „sprintf” mogą powodować błąd krytyczny „panika:
utf8_mg_pos_cache_update” podczas drukowania ciągów UTF-8 [RT #62666].
· W wersji 5.10.0 może zostać pominięta dynamicznie utworzona metoda „AUTOLOAD” (metoda
problem z pamięcią podręczną) [RT #60220,60232].
· W wersji 5.10.0 kombinacja „użyj funkcji” i „//ee” może spowodować, że pamięć
wyciek [RT #63110].
· „-C” w linii shebang („#!”) jest ponownie dozwolone, jeśli jest również określone w linii
wiersz poleceń. „-C” na linii Shebang było kiedyś cichym komunikatem „nie”. if też nie było włączone
wiersza poleceń, więc Perl 5.10.0 na to nie pozwolił, co spowodowało uszkodzenie niektórych skryptów. Teraz perł
sprawdza, czy znajduje się również w wierszu poleceń i umiera tylko wtedy, gdy nie jest [RT #67880].
· W wersji 5.10.0 niektóre typy wyrażeń regularnych z możliwością ponownego wejścia mogą ulec awarii lub spowodować
następujący błąd asercji [RT #60508]:
Twierdzenie rx->sublen >= (s - rx->subbeg) + nie powiodło się
Nowości or Zmieniono Diagnostyka
„panika: sv_chop %s”
Ten nowy błąd krytyczny pojawia się, gdy podprogram C „Perl_sv_chop()” przekazał pozycję
który nie znajduje się w buforze łańcuchowym skalara. Może to być spowodowane błędnym kodem XS,
i w tym momencie odzyskanie nie jest możliwe.
„Nie można znaleźć pakietu %s dla rodziców %s”
To ostrzeżenie zostało usunięte. Ogólnie rzecz biorąc, był produkowany tylko w połączeniu z
inne ostrzeżenia, a usunięcie go umożliwiło dodanie optymalizacji wyszukiwania ISA.
„V-string w użyciu/wymagany jest nieprzenośny”
To ostrzeżenie zostało usunięte.
„Głęboka rekurencja w podprogramie „%s””
Można teraz zmienić domyślny próg głębokości dla tego ostrzeżenia
100, poprzez ponowną kompilację Perl binary, ustawianie makra preprocesora C
„PERL_SUB_DEPTH_WARN” do żądanej wartości.
Zmieniono Internaliści
· Cytaty JRR Tolkiena na początku pliku źródłowego C zostały sprawdzone i prawidłowe
dodano cytaty dzięki łatce Toma Christiansena.
· „vcroak()” akceptuje teraz pierwszy argument o wartości null. Ponadto przeprowadzono pełny audyt
adnotacje kompilatora „nie NULL” oraz te dotyczące kilku innych funkcji wewnętrznych
zostały poprawione.
· Dodano nowe makra „dSAVEDERRNO”, „dSAVE_ERRNO”, „SAVE_ERRNO”, „RESTORE_ERRNO”
aby sformalizować tymczasowe zapisanie zmiennej „errno”.
· Dodano funkcję „Perl_sv_insert_flags” w celu rozszerzenia „Perl_sv_insert”.
· Dodano funkcję „Perl_newSV_type(type)”, odpowiadającą „Perl_newSV()”
po którym następuje „Perl_sv_upgrade(typ)”.
· Dodano funkcję „Perl_newSVpvn_flags()” odpowiadającą funkcji „Perl_newSVpvn()”
a następnie wykonaj akcję związaną z flagą.
Obecnie obsługiwane są dwa bity flagi.
„SVf_UTF8”
To wywoła dla ciebie „SvUTF8_on()”. (Zauważ, że nie konwertuje to sekwencji
znaków ISO 8859-1 do UTF-8). Dostępne jest opakowanie „newSVpvn_utf8()”.
to.
„SVs_TEMP”
Wywołaj „sv_2mortal()” na nowym SV.
Istnieje również opakowanie, które pobiera stałe ciągi znaków, „newSVpvs_flags()”.
· Dodano funkcję „Perl_croak_xs_usage” jako opakowanie do „Perl_croak”.
· Funkcje „PerlIO_find_layer” i „PerlIO_list_alloc” są teraz eksportowane.
· „PL_na” zostało usunięte z kodu podstawowego i zastąpione przez lokalny STRLEN
tymczasowe lub wywołania „*_nolen()”. Każde podejście jest szybsze niż „PL_na”, czyli a
szacunek wskaźnika do struktury interpretera w ramach ithreads i zmienna globalna
Inaczej.
· „Perl_mg_free()” używany do udostępniania wolnej pamięci poprzez SvMAGIC() na skalarze. To
teraz aktualizuje połączoną listę, aby usunąć każdy uwolniony element magii.
· W obszarze ithreads zliczane jest teraz odwołanie do wyrażenia regularnego w „PL_reg_curpm”. To eliminuje
wiele hackowskich obejść, aby sobie z tym poradzić, nie licząc referencji.
· „Perl_mg_magical()” czasami błędnie włączał „SvRMAGICAL()”. To było
stałe.
· publiczny Flagi IV i NV nie są teraz ustawiane, jeśli wartość ciągu zawiera na końcu „śmieci”.
To zachowanie jest zgodne z nieustawianiem publicznych flag IV lub NV, jeśli wartość
jest poza zakresem dla tego typu.
· Do diagnostyki włączonej przez "-Dm" dodano śledzenie alokacji SV. Śledzenie
może alternatywnie wysyłać dane za pośrednictwem mechanizmu „PERL_MEM_LOG”, jeśli został on włączony, kiedy
dotychczasowy Perl skompilowano plik binarny.
· Zastosowania „Nullav”, „Nullcv”, „Nullhv”, „Nullop”, „Nullsv” itp. zostały zastąpione przez
„NULL” w kodzie podstawowym i modułach innych niż dual-life, ponieważ „NULL” jest dla nich wyraźniejszy
nieznający podstawowego kodu.
· Dodano makro MUTABLE_PTR(p), które na (niepedantycznym) gcc nie będzie odrzucane
„const”, zwracając „pustkę *”. Makra „MUTABLE_SV(av)”, „MUTABLE_SV(cv)” itp.
to, rzutowanie na „AV *” itp. bez odrzucania „const”. Pozwala to na prawidłową kompilację
sprawdzanie czasu poprawności „const” w rdzeniu i pomogło wykryć pewne błędy
(teraz naprawiony).
· Dodano makra „mPUSHs()” i „mXPUSHs()”, służące do wypychania SV na stos i
ich umartwianie.
· Użycie prywatnej struktury „mro_meta” uległo niewielkiej zmianie. Nic poza rdzeniem
i tak powinien mieć do tego bezpośredni dostęp.
· Dodano nowe narzędzie „Porting/expand-macro.pl”, które pozwala zobaczyć, jak C
makro preprocesora zostanie rozwinięte po kompilacji. Jest to przydatne, gdy próbujesz
rozszyfrować piekło makro, czyli wnętrzności Perla.
Nowości Testy
Wiele modułów zaktualizowanych z CPAN zawiera nowe testy.
Kilka testów, które mogą zawiesić się na zawsze w przypadku niepowodzenia, zawiera teraz:
funkcję „watchdog”, która zabije je po przekroczeniu limitu czasu, co pomaga to zapewnić
„make test” i „make test_harness” uruchamiają się automatycznie. (Jerry Hedden).
Dodano kilka testów specyficznych dla rdzenia:
t/comp/retainedlines.t
Sprawdź, czy debuger może zachować linie źródłowe z „eval”.
t/io/perlio_fail.t
Sprawdź, czy złe warstwy nie działają.
t/io/perlio_leaks.t
Sprawdź, czy warstwy PerlIO nie przeciekają.
t/io/perlio_open.t
Sprawdź, czy istnieją pewne specjalne formy ażurowej pracy.
t/io/perlio.t
Ogólne testy PerlIO.
t/io/pvbm.t
Sprawdź, czy nie ma nieoczekiwanej interakcji między typami wewnętrznymi „PVBM” i
„PVGV”.
t/mro/package_aliases.t
Sprawdź, czy mro działa poprawnie w obecności pakietów aliasowanych.
t/op/dbm.t
Testy dla „dbmopen” i „dbmclose”.
t/op/index_thr.t
Testy interakcji „indeksu” i wątków.
t/op/pat_thr.t
Testy interakcji ezoterycznych wzorów i wątków.
t/op/qr_gc.t
Sprawdź, czy „qr” nie przecieka.
t/op/reg_email_thr.t
Testy interakcji rekurencji wyrażenia regularnego i wątków.
t/op/regexp_qr_embed_thr.t
Testuje interakcję wzorców z osadzonymi „qr//” i wątkami.
t/op/regexp_unicode_prop.t
Testuje właściwości Unicode w wyrażeniach regularnych.
t/op/regexp_unicode_prop_thr.t
Testy interakcji właściwości i wątków Unicode.
t/op/reg_nc_tie.t
Przetestuj powiązane metody „Tie::Hash::NamedCapture”.
t/op/reg_posixcc.t
Sprawdź, czy klasy znaków POSIX zachowują się spójnie.
t/op/re.t
Sprawdź, czy eksportowalne „re” działa w uniwersalny.c praca.
t/op/setpgrpstack.t
Sprawdź, czy „setpgrp” działa.
t/op/substr_thr.t
Testy interakcji „substr” i wątków.
t/op/upgrade.t
Sprawdź, czy aktualizacja i przypisywanie skalarów działa.
t/uni/lex_utf8.t
Sprawdź, czy Unicode w leksykonie działa.
t/uni/krawat.t
Sprawdź, czy działa Unicode i „wiązanie”.
Znany Problemy
To jest lista kilku znaczących, nienaprawionych błędów, które są regresjami z wersji 5.10.0
lub 5.8.x.
· „List::Util::first” zachowuje się niewłaściwie w obecności leksykalnego $_ (zwykle wprowadzanego
przez „moje $_” lub pośrednio przez „podane”). Zmienna ustawiana dla każdej iteracji
jest zmienną pakietu $_, a nie leksykalną $_ [RT #67694].
Podobny problem może wystąpić w innych modułach udostępniających funkcje wymagające bloku
jako ich pierwszy argument, np
foo {... $_ ...} lista
· Pragma „charnames” może generować błąd wykonania podczas interpolacji wyrażenia regularnego [RT
#56444]:
użyj nazw znaków ':full';
mój $r1 = qr/\N{TAJSKA POSTAĆ SARA I}/;
„foo” =~ $r1; # Dobra
"foo" =~ /$r1+/; # błąd wykonania
Rozwiązaniem jest wygenerowanie znaku poza wyrażeniem regularnym:
my $a = "\N{TAJSKA POSTAĆ SARA I}";
mój $r1 = qr/$a/;
· Niektóre wyrażenia regularne mogą działać znacznie wolniej, gdy są uruchamiane w wątku podrzędnym w porównaniu z
wątek, do którego wkompilowano wzór [RT #55600].
Wycofanie
Następujące elementy są obecnie przestarzałe.
· „Switch” jest błędny i należy go unikać. Od wersji Perl 5.11.0 i nowszych jest to zamierzone
każde użycie podstawowej wersji tego modułu spowoduje wyświetlenie ostrzeżenia i że moduł
zostanie ostatecznie usunięty z rdzenia (prawdopodobnie w Perlu 5.14.0). Zobacz „Przełącz
instrukcje” w Perlsyn w celu jego zastąpienia.
· „suidperl” zostanie usunięty w wersji 5.12.0. Zapewnia to mechanizm emulacji setuid
bity uprawnień w systemach, które nie obsługują tego poprawnie.
Podziękowania
Część prac w tym wydaniu została sfinansowana z grantu TPF.
Nicholas Clark oficjalnie odszedł z pracy związanej z pompowaniem konserwacyjnym pod koniec 2008 roku;
jednak w rzeczywistości od tego czasu włożył wiele wysiłku, aby pomóc w dostosowaniu 5.10.1
stanu, który ma zostać wydany, łącznie z napisaniem znacznej części tej perldelty.
W szczególności Steffen Mueller i David Golden pomogli w dopracowaniu i dopracowaniu modułów CPAN
zsynchronizowane z ich odpowiednikami w rdzeniu.
Craig Berry niestrudzenie starał się utrzymać system VMS, niezależnie od tego, ile razy to robił
złamał to dla niego.
Inni główni autorzy wnieśli większość zmian i zastosowali większość poprawek
wysłane przez setki autorów wymienionych w AUTORSKI.
(Przepraszam wszystkie osoby, których nie wymieniłem z imienia i nazwiska).
Na koniec podziękowania dla Larry’ego Walla, bez którego to wszystko nie byłoby konieczne.
Raportowanie Błędy
Jeśli znajdziesz coś, co uważasz za błąd, możesz sprawdzić artykuły ostatnio opublikowane na
grupa dyskusyjna comp.lang.perl.misc i baza błędów perla na http://rt.perl.org/perlbug/ .
Informacje mogą być również pod adresem http://www.perl.org/ , strona główna Perla.
Jeśli uważasz, że masz niezgłoszony błąd, uruchom plik perlbug program dołączony do
twoje zwolnienie. Pamiętaj, aby ograniczyć swój błąd do małego, ale wystarczającego przypadku testowego. Twój błąd
raport, wraz z wyjściem "perl -V", zostanie wysłany do [email chroniony] być
przeanalizowane przez zespół portujący Perla.
Jeśli zgłaszany błąd ma wpływ na bezpieczeństwo, co czyni go niewłaściwym:
wyślij na publicznie zarchiwizowaną listę mailingową, a następnie wyślij ją do
[email chroniony]. Wskazuje to na niezarchiwizowane wysyłkę zamkniętej subskrypcji
lista, która zawiera wszystkich głównych członków komisji, którzy będą mogli pomóc w ocenie wpływu
problemów, znaleźć rozwiązanie i pomóc koordynować wydawanie poprawek, aby
złagodzić lub naprawić problem na wszystkich platformach, na których jest obsługiwany Perl. Proszę tylko
użyj tego adresu w przypadku problemów z bezpieczeństwem w jądrze Perla, a nie dla modułów niezależnie
dystrybuowane na CPAN.
Korzystaj z perl5101delta online za pomocą usług onworks.net