Server IP : 85.214.239.14 / Your IP : 18.118.28.160 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/cwd/usr/share/perl5/Test/File/ShareDir/ |
Upload File : |
use 5.006; use strict; use warnings; package Test::File::ShareDir::Utils; our $VERSION = '1.001002'; our $AUTHORITY = 'cpan:KENTNL'; # AUTHORITY # ABSTRACT: Simple utilities for File::ShareDir testing use Exporter 5.57 qw(import); use Carp qw( croak ); our @EXPORT_OK = qw( extract_dashes ); sub extract_dashes { my ( $undashed_to, $source ) = @_; if ( not ref $source or 'HASH' ne ref $source ) { return croak(q[Must pass a hashref]); } my %input_config = %{$source}; my $params = {}; for my $key ( keys %input_config ) { next unless $key =~ /\A-(.*)\z/msx; $params->{$1} = delete $input_config{$key}; } $params->{$undashed_to} = {} if not exists $params->{$undashed_to}; for my $key ( keys %input_config ) { $params->{$undashed_to}->{$key} = $input_config{$key}; } return $params; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Test::File::ShareDir::Utils - Simple utilities for File::ShareDir testing =head1 VERSION version 1.001002 =head1 SYNOPSIS use Test::File::ShareDir::Utils qw( extract_dashes ); my $hash = extract_dashes('dists', $oldhash ); =head1 EXPORTABLE FUNCTIONS =head2 extract_dashes A utility that helps transform: -opt_a => bar -opt_b => baz NameA => NameAValue NameB => NameBValue Into opt_a => bar opt_b => baz modules => { NameA => NameAValue NameB => NameBValue } This is a useful approach used all over import and functional style interfaces due to explicit configuration being needed only on rare occasions. =head1 AUTHOR Kent Fredric <kentnl@cpan.org> =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2017 by Kent Fredric <kentnl@cpan.org>. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut