NAME
MDK::Common::DataStructure - miscellaneous list/hash manipulation functions
SYNOPSIS
use MDK::Common::DataStructure qw(:all);
EXPORTS
- sort_numbers(LIST)
-
numerical sort (small numbers at beginning)
- ikeys(HASH)
-
aka sorted integer keys, as simple as
sort { $a <=> $b } keys
- add2hash(HASH REF, HASH REF)
-
adds to the first hash the second hash if the key/value is not already there
- add2hash_
-
adds to the first hash the second hash if the key is not already there
- put_in_hash
-
adds to the first hash the second hash, crushing existing key/values
- member(SCALAR, LIST)
-
is the value in the list?
- invbool(SCALAR REF)
-
toggles the boolean value
- listlength(LIST)
-
returns the length of the list. Useful in list (opposed to array) context:
sub f { "a", "b" } my $l = listlength f();
whereas
scalar f()
would return "b" - deref(REF)
-
de-reference
- deref_array(REF)
-
de-reference arrays:
deref_array [ "a", "b" ] #=> ("a", "b") deref_array "a" #=> "a"
- is_empty_array_ref(SCALAR)
-
is the scalar undefined or is the array empty
- is_empty_hash_ref(SCALAR)
-
is the scalar undefined or is the hash empty
- uniq(LIST)
-
returns the list with no duplicates (keeping the first elements)
- uniq_ { CODE } LIST
-
returns the list with no duplicates according to the scalar results of CODE on each element of LIST (keeping the first elements)
uniq_ { $_->[1] } [ 1, "fo" ], [ 2, "fob" ], [ 3, "fo" ], [ 4, "bar" ]
gives [ 1, "fo" ], [ 2, "fob" ], [ 4, "bar" ]
- difference2(ARRAY REF, ARRAY REF)
-
returns the first list without the element of the second list
- intersection(ARRAY REF, ARRAY REF, ...)
-
returns the elements which are in all lists
- next_val_in_array(SCALAR, ARRAY REF)
-
finds the value that follow the scalar in the list (circular):
next_val_in_array(3, [1, 2, 3])
gives1
(do not use a list with duplicates) - group_by2(LIST)
-
interprets the list as an ordered hash, returns a list of [key,value]:
group_by2(1 =
2, 3 => 4, 5 => 6)> gives[1,2], [3,4], [5,6]
- list2kv(LIST)
-
interprets the list as an ordered hash, returns the keys and the values:
list2kv(1 =
2, 3 => 4, 5 => 6)> gives[1,3,5], [2,4,6]