perl - Use data structure references more commonly -
i have been reading of perl513*delta files , have seen of new features coming perl 5.14. beginning perl 5.13.7 many of array/hash functions work on array/hash refs well. while seen syntactic sugar, or perl doing expect, wonder, will/should change paradigm of declaring data structures in perl? known caveat breaks compatibility eariler perl's, arguements , against using anonymous structures primarily?
for example:
#!/usr/bin/env perl use strict; use warnings; use 5.13.7; $hashref = { english => 'hello', spanish => 'hola', french => 'bon jour' }; foreach $greeting (keys $hashref) { $hashref->{$greeting}; #use since need later version anyway } rather more traditional way using named hash (%hash).
p.s. if seen augmentative can change cw, curious hear perspectives.
the ability use array , hash functions on references syntactic sugar , need not impact way work first level plural structures. there several reasons this:
given my $array = [1 .. 10]
list processing functions
map,grep,sort,reverse,print,say,printf, many others still need passed proper lists, means using@$arrayvs simpler@arraythese functions.the
for/foreachloop needs passed list, requiring@$array$arraytrue, determine length need write@$arraywhile ($array) { infinite loop } while (@$array) { wanted } while (@array) { no room error here }sub-scripting real
@array$array[$idx]marginally faster (~15%)$array->[$idx]since dereference not need happen on each access. difference hashes smaller, around 3%, due overhead of hashing function.
basically, moving references, different set of functionality needs use dereferencing sigils. instead, take advantage of pre v5.13.7 functionality declaring immediate use my @array; %hash; , utilize new syntax shortcuts in areas have used excessive @{ ... } or %{ ... } constructs applicable functions.
Comments
Post a Comment