Hydrogen - utilities for the simplest elements of Perl
Normal version of the function:
use feature 'say'; use Hydrogen::HashRef { prefix => 'hhr_' }, qw( get set ); my %hash; hhr_set( \%hash, Alice => 123 ); hhr_set( \%hash, Bob => 456 ); say $hash{Alice}; ## ==> 123 say hhr_get( \%hash, 'Bob' ); ## ==> 456
Version of the function which uses prototypes:
use feature 'say'; use Hydrogen::Hash { prefix => 'hh_' }, qw( get set ); my %hash; hh_set( %hash, Alice => 123 ); hh_set( %hash, Bob => 456 ); say $hash{Alice}; ## ==> 123 say hh_get( %hash, 'Bob' ); ## ==> 456
Currying:
use feature 'say'; use Hydrogen::Curry::HashRef qw( curry_get curry_set ); my %hash; my $setter = curry_set( \%hash ); my $getter = curry_get( \%hash ); $setter->( Alice => 123 ); $setter->( Bob => 456 ); say $hash{Alice}; ## ==> 123 say $getter->( 'Bob' ); ## ==> 456
Using the $_ topic variable:
$_
use feature 'say'; use Hydrogen::Topic::HashRef qw( get set ); local $_ = {}; set( Alice => 123 ); set( Bob => 456 ); say $_->{Alice}; ## ==> 123 say get( 'Bob' ); ## ==> 456
Hydrogen provides a standard library for doing really simple things in Perl. And I mean really simple things.
Things which are often Perl builtin functions, operators, and even just part of Perl syntax like accessing keys within hashes.
Whydrogen?
You can make a coderef pointing to \&Hydrogen::Number::add but you can't make a coderef pointing to Perl's += operator!
\&Hydrogen::Number::add
+=
If you are implementing a scripting language or DSL which needs to provide a standard library of builtin functions, then Hydrogen may be a good place to start.
Hydrogen::ArrayRef
Hydrogen::Bool
Hydrogen::CodeRef
Hydrogen::Counter
Hydrogen::HashRef
Hydrogen::Number
Hydrogen::Scalar
Hydrogen::String
Hydrogen::Array
Hydrogen::Code
Hydrogen::Hash
Hydrogen::Curry::ArrayRef
Hydrogen::Curry::Bool
Hydrogen::Curry::CodeRef
Hydrogen::Curry::Counter
Hydrogen::Curry::HashRef
Hydrogen::Curry::Number
Hydrogen::Curry::Scalar
Hydrogen::Curry::String
Hydrogen::Topic::ArrayRef
Hydrogen::Topic::Bool
Hydrogen::Topic::CodeRef
Hydrogen::Topic::Counter
Hydrogen::Topic::HashRef
Hydrogen::Topic::Number
Hydrogen::Topic::Scalar
Hydrogen::Topic::String
Hydrogen uses the following functions internally, but they may also be useful to you.
Hydrogen::croak( $message, @args? )
Acts like croak from Carp, but if @args is provided, will sprintf first. If @args contains references, those will be dumped using Data::Dumper.
croak
@args
sprintf
Hydrogen::fc( $string? )
Acts like CORE::fc if that function is available, and CORE::lc otherwise.
CORE::fc
CORE::lc
If no $string is provided, operates on $_.
$string
Hydrogen requires Perl 5.8.1 or above.
Hydrogen requires the modules Carp, Data::Dumper, List::Util, and Scalar::Util, all of which normally come with Perl. Hydrogen needs at least version 1.54 of List::Util; Perl versions older than 5.32.0 will be distributed with older versions of List::Util, but upgrades to the module can be found on the CPAN.
Hydrogen also requires the module Exporter::Shiny which can be found on the CPAN.
Hydrogen's test suite requires the module Test2::V0 which can be found on the CPAN.
Please report any bugs to http://github.com/tobyink/p5-hydrogen/issues.
This standard library is autogenerated from Sub::HandlesVia which provides the same functionality as methods which objects can delegate to attributes.
Toby Inkster <tobyink@cpan.org>.
This software is copyright (c) 2022 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
To install Hydrogen, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Hydrogen
CPAN shell
perl -MCPAN -e shell install Hydrogen
For more information on module installation, please visit the detailed CPAN module installation guide.