Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Hash::MoreUtils(3)    User Contributed Perl Documentation   Hash::MoreUtils(3)

NAME
       Hash::MoreUtils - Provide the stuff missing in Hash::Util

SYNOPSIS
	 use Hash::MoreUtils qw(slice slice_def	slice_exists slice_grep
				hashsort
			       );

DESCRIPTION
       Similar to "List::MoreUtils", "Hash::MoreUtils" contains	trivial	but
       commonly-used functionality for hashes.

FUNCTIONS
   "slice" HASHREF[, LIST]
       Returns a hash containing the (key, value) pair for every key in	LIST.

       If no "LIST" is given, all keys are assumed as "LIST".

   "slice_def" HASHREF[, LIST]
       As "slice", but only includes keys whose	values are defined.

       If no "LIST" is given, all keys are assumed as "LIST".

   "slice_exists" HASHREF[, LIST]
       As "slice" but only includes keys which exist in	the hashref.

       If no "LIST" is given, all keys are assumed as "LIST".

   "slice_grep"	BLOCK, HASHREF[, LIST]
       As "slice", with	an arbitrary condition.

       If no "LIST" is given, all keys are assumed as "LIST".

       Unlike "grep", the condition is not given aliases to elements of
       anything.  Instead, %_ is set to	the contents of	the hashref, to	avoid
       accidentally auto-vivifying when	checking keys or values.  Also,
       'uninitialized' warnings	are turned off in the enclosing	scope.

   "slice_map" HASHREF[, MAP]
       Returns a hash containing the (key, value) pair for every key in	"MAP".

       If no "MAP" is given, all keys of "HASHREF" are assumed mapped to
       theirself.

   "slice_def_map" HASHREF[, MAP]
       As "slice_map", but only	includes keys whose values are defined.

       If no "MAP" is given, all keys of "HASHREF" are assumed mapped to
       theirself.

   "slice_exists_map" HASHREF[,	MAP]
       As "slice_map" but only includes	keys which exist in the	hashref.

       If no "MAP" is given, all keys of "HASHREF" are assumed mapped to
       theirself.

   "slice_grep_map" BLOCK, HASHREF[, MAP]
       As "slice_map", with an arbitrary condition.

       If no "MAP" is given, all keys of "HASHREF" are assumed mapped to
       theirself.

       Unlike "grep", the condition is not given aliases to elements of
       anything.  Instead, %_ is set to	the contents of	the hashref, to	avoid
       accidentally auto-vivifying when	checking keys or values.  Also,
       'uninitialized' warnings	are turned off in the enclosing	scope.

   "hashsort" [BLOCK,] HASHREF
	 my @array_of_pairs  = hashsort	\%hash;
	 my @pairs_by_length = hashsort	sub { length($a) <=> length($b)	}, \%hash;

       Returns the (key, value)	pairs of the hash, sorted by some property of
       the keys.  By default (if no sort block given), sorts the keys with
       "cmp".

       I'm not convinced this is useful	yet.  If you can think of some way it
       could be	more so, please	let me know.

   "safe_reverse" [BLOCK,] HASHREF
	 my %dup_rev = safe_reverse \%hash

	 sub croak_dup {
	     my	($k, $v, $r) = @_;
	     exists( $r->{$v} )	and
	       croak "Cannot safe reverse: $v would be mapped to both $k and $r->{$v}";
	     $v;
	 };
	 my %easy_rev =	save_reverse \&croak_dup, \%hash

       Returns safely reversed hash (value, key	pairs of original hash). If no
       "BLOCK" is given, following routine will	be used:

	 sub merge_dup {
	     my	($k, $v, $r) = @_;
	     return exists( $r->{$v} )
		    ? (	ref($r->{$v}) ?	[ @{$r->{$v}}, $k ] : [	$r->{$v}, $k ] )
		    : $k;
	 };

       The "BLOCK" will	be called with 3 arguments:

       "key"   The key from the	"( key,	value )" pair in the original hash

       "value" The value from the "( key, value	)" pair	in the original	hash

       "ref-hash"
	       Reference to the	reversed hash (read-only)

       The "BLOCK" is expected to return the value which will used for the
       resulting hash.

AUTHOR
       Hans Dieter Pearcey, "<hdp@cpan.org>", Jens Rehsack,
       "<rehsack@cpan.org>"

BUGS
       Please report any bugs or feature requests to
       "bug-hash-moreutils@rt.cpan.org", or through the	web interface at
       <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Hash-MoreUtils>.	 I
       will be notified, and then you'll automatically be notified of progress
       on your bug as I	make changes.

SUPPORT
       You can find documentation for this module with the perldoc command.

	   perldoc Hash::MoreUtils

       You can also look for information at:

       o   RT: CPAN's request tracker

	   <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Hash-MoreUtils>

       o   AnnoCPAN: Annotated CPAN documentation

	   <http://annocpan.org/dist/Hash-MoreUtils>

       o   CPAN	Ratings

	   <http://cpanratings.perl.org/d/Hash-MoreUtils>

       o   Search CPAN

	   <http://search.cpan.org/dist/Hash-MoreUtils/>

ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
       Copyright 2005 Hans Dieter Pearcey, all rights reserved.	 Copyright
       2010-2013 Jens Rehsack

       This program is free software; you can redistribute it and/or modify it
       under the terms of either: the GNU General Public License as published
       by the Free Software Foundation;	or the Artistic	License.

       See http://dev.perl.org/licenses/ for more information.

perl v5.32.1			  2021-02-28		    Hash::MoreUtils(3)

NAME | SYNOPSIS | DESCRIPTION | FUNCTIONS | AUTHOR | BUGS | SUPPORT | ACKNOWLEDGEMENTS | COPYRIGHT & LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Hash::MoreUtils&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help