Memory-Process
view release on metacpan or search on metacpan
package Memory::Process;
use base qw(Memory::Usage);
use strict;
use warnings;
use Readonly;
# Constants.
Readonly::Scalar our $EMPTY_STR => q{};
our $VERSION = 0.06;
# Record.
sub record {
my ($self, $message, $pid) = @_;
if (! defined $message) {
$message = $EMPTY_STR;
}
return $self->SUPER::record($message, $pid);
}
# Print report to STDERR.
sub dump {
my $self = shift;
return print STDERR scalar $self->report;
}
# Get report.
sub report {
my $self = shift;
my $report = $self->SUPER::report;
my @report_full = split m/\n/ms, $report;
my @report = ();
if (@report_full > 2) {
@report = ($report_full[0], $report_full[-2], $report_full[-1]);
};
my $report_scalar = (join "\n", @report);
if ($report_scalar ne $EMPTY_STR) {
$report_scalar .= "\n";
}
return wantarray ? @report : $report_scalar;
}
# Reset records.
sub reset {
my $self = shift;
@{$self} = ();
return;
}
# Get state.
sub state {
my $self = shift;
return [@{$self}];
}
1;
__END__
=pod
=encoding utf8
=head1 NAME
Memory::Process - Perl class to determine actual memory usage.
=head1 SYNOPSIS
use Memory::Process;
my $m = Memory::Process->new(%params);
$m->dump;
$m->record($message, $pid);
my @report = $m->report;
my $report = $m->report;
$m->reset;
$m->state;
=head1 METHODS
=head2 C<new>
my $m = Memory::Process->new(%params);
Constructor.
Returns instance of object.
=head2 C<dump>
( run in 2.185 seconds using v1.01-cache-2.11-cpan-71847e10f99 )