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.