Megjelent az 5.8.1-es Perl
Pár napja, szeptember 27-én, megjelent a Perl programozási nyelv 5.8.1-es verziója. Ez a verzió az 5.8.0-as verzió hibáit, hiányosságait javítja. A következőkben egy kivonatos verziója olvasható a bejelentésnek:
Hash véletlenszerűség
Főleg biztonsági okokból, a hashek "véletlenszerű sorrendje" méginkább véletlenszerű lett. Előzőleg bár a keys(), values() és each() által visszaadott sorrend véletlenszerű volt, egyben reprodukálható is, minden futtatás során ugyanolyan sorrendet kaptunk. Most minden futás során más sorrendet kapunk.
A Perl sohasem garantálta a hash kulcsok sorrendjét, és a sorrend meg is változott párszor az ötös verzió ideje alatt. A hash kulcsainak sorrendje, ahogy eddig is, ezután is, a beszúrási sorrendtől függ.
A hozzáadott véletlenszerűség érinthet pár alkalmazást.
Egy lehetséges helyzet, mikor egy alkalmazás kimenete hash adatot is tartalmaz. Például ha eddig a Data::Dumper modult használtad dumpolásra, majd az így elkészült kimeneteket hasonlítottad össze, hogy lásd, történt-e változás, akkor hamis változásokat fogsz eredményül kapni. Általában az orvosság a kulcsok vagy az értékek rendezése, konkrétan a Data::Dumper SortKeys kapcsolójának használata. Ha a sorrend mindenképpen fontos számodra, használj hash-t és tie-t együtt, például a Tie::IxHash modult, ami alapértelmezett esetben megtartja a hash elemek hozzáadási sorrendjét. [...]
Az UTF-8 a fileváltozókon (filehandle) nem aktivizálódik lokális beállítások esetén
A Perl 5.8.0-ban minden fileváltozó, beleértve a standard fileváltozókat is, implicite UTF-8-ra lett állítva, amennyiben a lokális beállítások az UTF-8 használatát javasolták. Ez a tulajdonság túl sok problémát okozott, ezért ki lett kapcsolva és újra lett gondolva.
Az egy számból álló v-stringek a jövőben nem lesznek v-stringek a "=>" előtt
A verziósztringek, vagy másképp a v-stringek, melyek az 5.6.0-s Perlben kerültek bevezetésre, forrásai voltak néhány félreértésnek, főleg, mikor a felhasználó nem szerette volna használni ezeket, de a Perl azt hitte, hogy ő jobban tudja. A legtöbb esetben a "=>" előtti v-string értelmezés okozott gondot, mikor nem stringgé lett átalakítva, hanem v-stringnek lett értelmezve. Más szavakkal:
%h = (v65 => 42);
az 5.6.0-tól a következőt jelentette:
%h = ('A' => 42);
(ahol ASCII alapú volt a rendszer). A Perl 5.8.1 visszaállítja a természetes értelmezést:
%h = ('v65' => 42);
A több számból álló v-stringek, mint a v65.66 és v65.66.67 továbbra is v-stringek lesznek az 5.8-as Perlben.
Tie-os tömbök negatív tömbindexxel
A korábbiakban a FETCH, a STORE, az EXISTS és a DELETE metódusok által megkapott értékek a tie-os (jobb fordítás?) tömbök esetén mindig nemnegatívak lettek. Ha az aktuális érték negatív volt, a Perl implicit meghívta a FETCHSIZE metódust, hozzáadta ennek értékét az indexhez, és ezt továbbította a tie-os tömb metódusnak. Ez a viselkedés ezetúl opcionális. Ha a tie-os tömb osztály egy csomagváltozót tartalmaz, melynek a neve $NEGATIVE_INDICES és az értéke igaz, akkor a negatív értékek tovább lesznek adva a megfelelő metódusnak.
Aki áttér az új verzióra, mindenképpen javaslom számára a bejelentés elolvasását! Az oldalon pár letöltési lehetőség is fel van sorolva.
■ Hash véletlenszerűség
Főleg biztonsági okokból, a hashek "véletlenszerű sorrendje" méginkább véletlenszerű lett. Előzőleg bár a keys(), values() és each() által visszaadott sorrend véletlenszerű volt, egyben reprodukálható is, minden futtatás során ugyanolyan sorrendet kaptunk. Most minden futás során más sorrendet kapunk.
A Perl sohasem garantálta a hash kulcsok sorrendjét, és a sorrend meg is változott párszor az ötös verzió ideje alatt. A hash kulcsainak sorrendje, ahogy eddig is, ezután is, a beszúrási sorrendtől függ.
A hozzáadott véletlenszerűség érinthet pár alkalmazást.
Egy lehetséges helyzet, mikor egy alkalmazás kimenete hash adatot is tartalmaz. Például ha eddig a Data::Dumper modult használtad dumpolásra, majd az így elkészült kimeneteket hasonlítottad össze, hogy lásd, történt-e változás, akkor hamis változásokat fogsz eredményül kapni. Általában az orvosság a kulcsok vagy az értékek rendezése, konkrétan a Data::Dumper SortKeys kapcsolójának használata. Ha a sorrend mindenképpen fontos számodra, használj hash-t és tie-t együtt, például a Tie::IxHash modult, ami alapértelmezett esetben megtartja a hash elemek hozzáadási sorrendjét. [...]
Az UTF-8 a fileváltozókon (filehandle) nem aktivizálódik lokális beállítások esetén
A Perl 5.8.0-ban minden fileváltozó, beleértve a standard fileváltozókat is, implicite UTF-8-ra lett állítva, amennyiben a lokális beállítások az UTF-8 használatát javasolták. Ez a tulajdonság túl sok problémát okozott, ezért ki lett kapcsolva és újra lett gondolva.
Az egy számból álló v-stringek a jövőben nem lesznek v-stringek a "=>" előtt
A verziósztringek, vagy másképp a v-stringek, melyek az 5.6.0-s Perlben kerültek bevezetésre, forrásai voltak néhány félreértésnek, főleg, mikor a felhasználó nem szerette volna használni ezeket, de a Perl azt hitte, hogy ő jobban tudja. A legtöbb esetben a "=>" előtti v-string értelmezés okozott gondot, mikor nem stringgé lett átalakítva, hanem v-stringnek lett értelmezve. Más szavakkal:
%h = (v65 => 42);
az 5.6.0-tól a következőt jelentette:
%h = ('A' => 42);
(ahol ASCII alapú volt a rendszer). A Perl 5.8.1 visszaállítja a természetes értelmezést:
%h = ('v65' => 42);
A több számból álló v-stringek, mint a v65.66 és v65.66.67 továbbra is v-stringek lesznek az 5.8-as Perlben.
Tie-os tömbök negatív tömbindexxel
A korábbiakban a FETCH, a STORE, az EXISTS és a DELETE metódusok által megkapott értékek a tie-os (jobb fordítás?) tömbök esetén mindig nemnegatívak lettek. Ha az aktuális érték negatív volt, a Perl implicit meghívta a FETCHSIZE metódust, hozzáadta ennek értékét az indexhez, és ezt továbbította a tie-os tömb metódusnak. Ez a viselkedés ezetúl opcionális. Ha a tie-os tömb osztály egy csomagváltozót tartalmaz, melynek a neve $NEGATIVE_INDICES és az értéke igaz, akkor a negatív értékek tovább lesznek adva a megfelelő metódusnak.
Aki áttér az új verzióra, mindenképpen javaslom számára a bejelentés elolvasását! Az oldalon pár letöltési lehetőség is fel van sorolva.