kivitendo/SL/Util.pm @ fc1490e8
5e9aaf1c | Moritz Bunkus | package SL::Util;
|
|
use strict;
|
|||
use parent qw(Exporter);
|
|||
use Carp;
|
|||
our @EXPORT_OK = qw(_hashify);
|
|||
sub _hashify {
|
|||
my $keep = shift;
|
|||
croak "Invalid number of entries to keep" if 0 > $keep;
|
|||
return @_[0..scalar(@_) - 1] if $keep >= scalar(@_);
|
|||
return ($keep ? @_[0..$keep - 1] : (),
|
|||
((1 + $keep) == scalar(@_)) && ((ref($_[$keep]) || '') eq 'HASH') ? %{ $_[$keep] } : @_[$keep..scalar(@_) - 1]);
|
|||
}
|
|||
1;
|
|||
__END__
|
|||
=pod
|
|||
=encoding utf8
|
|||
=head1 NAME
|
|||
SL::Util - Assorted utility functions
|
|||
=head1 OVERVIEW
|
|||
Most important things first:
|
|||
DO NOT USE C<@EXPORT> HERE! Only C<@EXPORT_OK> is allowed!
|
|||
=head1 FUNCTIONS
|
|||
=over 4
|
|||
=item C<_hashify $num, @args>
|
|||
Hashifies the very last argument. Returns a list consisting of two
|
|||
parts:
|
|||
The first part are the first C<$num> elements of C<@args>.
|
|||
The second part depends on the remaining arguments. If exactly one
|
|||
argument remains and is a hash reference then its dereferenced
|
|||
elements will be used. Otherwise the remaining elements of C<@args>
|
|||
will be returned as-is.
|
|||
Useful if you want to write code that can be called from Perl code and
|
|||
Template code both. Example:
|
|||
use SL::Util qw(_hashify);
|
|||
sub do_stuff {
|
|||
my ($self, %params) = _hashify(1, @_);
|
|||
# Now do stuff, obviously!
|
|||
}
|
|||
=back
|
|||
=head1 BUGS
|
|||
Nothing here yet.
|
|||
=head1 AUTHOR
|
|||
Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
|
|||
=cut
|