The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Audit::DBI::Utils - Utilities for the Audit::DBI distribution.

VERSION

Version 1.9.0

SYNOPSIS

        use Audit::DBI::Utils;

        my $ip_address = Audit::DBI::Utils::integer_to_ipv4( $integer );

        my $integer = Audit::DBI::Utils::ipv4_to_integer( $ip_address );

        my $differences = Audit::DBI::Utils::diff_structures(
                $data_structure_1,
                $data_structure_2,
                comparison_function => sub { my ( $a, $b ) = @_; $a eq $b; }, #optional
        );

        my $diff_string_bytes = Audit::DBI::Utils::get_diff_string_bytes(
                $differences
        );

FUNCTIONS

stringify_data_structure()

        my $string = Audit::DBI::Utils::stringify_data_structure(
                data_structure             => $data_structure,
                object_stringification_map =>
                {
                        'Math::Currency' => 'as_float',
                },
        );

integer_to_ipv4()

Convert a 32-bits integer representing an IP address into its IPv4 form.

        my $ip_address = Audit::DBI::Utils::integer_to_ipv4( $integer );

ipv4_to_integer()

Convert an IPv4 address to a 32-bit integer.

        my $integer = Audit::DBI::Utils::ipv4_to_integer( $ip_address );

diff_structures()

Return the differences between the two data structures passed as parameter.

By default, if leaf nodes are compared with '==' if they are both numeric, and with 'eq' otherwise.

An optional comparison_function parameter can be used to specify a different comparison function.

        my $differences = Audit::DBI::Utils::diff_structures(
                $data_structure_1,
                $data_structure_2,
        );

        # Alternative built-in comparison function.
        # Leaf nodes are compared using 'eq'.
        my $diff = Audit::DBI::Utils::diff_structures(
                $data_structure_1,
                $data_structure_2,
                comparison_function => 'eq',
        );

        # Alternative custom comparison function.
        my $diff = Audit::DBI::Utils::diff_structures(
                $data_structure_1,
                $data_structure_2,
                comparison_function => sub
                {
                        my ( $variable_1, $variable2 ) = @_;
                        # [...]
                        return $is_equal;
                }
        );

get_diff_string_bytes()

Return the size in bytes of the string differences. The argument must be a diff structure returned by Audit::DBI::Utils::diff_structures().

This function has two modes:

  • Relative comparison (default):

    In this case, a string change from 'TestABC' to 'TestCDE' is a 0 bytes change (since there is the same number of characters).

            my $diff_string_bytes = Audit::DBI::Utils::get_diff_string_bytes(
                    $diff_structure
            );
  • Absolute comparison:

    In this case, a string change from 'TestABC' to 'TestCDE' is a 6 bytes change (3 characters removed, and 3 added).

            my $diff_string_bytes = Audit::DBI::Utils::get_diff_string_bytes(
                    $diff_structure,
                    absolute => 1,
            );

    Note that absolute comparison requires String::Diff to be installed.

get_string_bytes()

Return the size in bytes of all the strings contained in the data structure passed as argument.

        my $string_bytes = Audit::DBI::Utils::get_string_bytes( 'Test' );

        my $string_bytes = Audit::DBI::Utils::get_string_bytes(
                [ 'Test1', 'Test2' ]
        );

        my $string_bytes = Audit::DBI::Utils::get_string_bytes(
                { 'Test' => 1 }
        );

Note: this function is recursive, and will explore both arrayrefs and hashrefs.

BUGS

Please report any bugs or feature requests through the web interface at https://github.com/guillaumeaubert/Audit-DBI/issues/new. 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 Audit::DBI::Utils

You can also look for information at:

AUTHOR

Guillaume Aubert, <aubertg at cpan.org>.

COPYRIGHT & LICENSE

Copyright 2010-2017 Guillaume Aubert.

This code is free software; you can redistribute it and/or modify it under the same terms as Perl 5 itself.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LICENSE file for more details.