| IPC-Run3 documentation | Contained in the IPC-Run3 distribution. |
IPC::Run3::ProfLogger - write profiling data to a log file
use IPC::Run3::ProfLogger; my $logger = IPC::Run3::ProfLogger->new; ## write to "run3.out" my $logger = IPC::Run3::ProfLogger->new( Destination => $fn ); $logger->app_call( \@cmd, $time ); $logger->run_exit( \@cmd1, @times1 ); $logger->run_exit( \@cmd1, @times1 ); $logger->app_exit( $time );
Used by IPC::Run3 to write a profiling log file. Does not generate reports or maintain statistics; its meant to have minimal overhead.
Its API is compatible with a tiny subset of the other IPC::Run profiling classes.
IPC::Run3::ProfLogger->new( ... )$logger->run_exit( ... )$logger->app_exit( $arg )$logger->app_call( $t, @args)Copyright 2003, R. Barrie Slaymaker, Jr., All Rights Reserved
You may use this module under the terms of the BSD, Artistic, or GPL licenses, any version.
Barrie Slaymaker <barries@slaysys.com>
| IPC-Run3 documentation | Contained in the IPC-Run3 distribution. |
package IPC::Run3::ProfLogger; $VERSION = 0.044;
use strict;
sub new { my $class = ref $_[0] ? ref shift : shift; my $self = bless { @_ }, $class; $self->{Destination} = "run3.out" unless defined $self->{Destination} && length $self->{Destination}; open PROFILE, ">$self->{Destination}" or die "$!: $self->{Destination}\n"; binmode PROFILE; $self->{FH} = *PROFILE{IO}; $self->{times} = []; return $self; }
sub run_exit { my $self = shift; my $fh = $self->{FH}; print( $fh join( " ", ( map { my $s = $_; $s =~ s/\\/\\\\/g; $s =~ s/ /_/g; $s; } @{shift()} ), join( ",", @{$self->{times}}, @_, ), ), "\n" ); }
sub app_exit { my $self = shift; my $fh = $self->{FH}; print $fh "\\app_exit ", shift, "\n"; }
sub app_call { my $self = shift; my $fh = $self->{FH}; my $t = shift; print( $fh join( " ", "\\app_call", ( map { my $s = $_; $s =~ s/\\\\/\\/g; $s =~ s/ /\\_/g; $s; } @_ ), $t, ), "\n" ); }
1;