ugrás a tartalomhoz

Megjelent az 5.8.1-es Perl

Bártházi András · 2003. Okt. 2. (Cs), 21.37
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.