The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/perl
# @author Bodo (Hugo) Barwich
# @version 2018-06-14
# @package SubProcess Management
# @subpackage Spawn Subprocesses and read their Output and Errors
# This Module defines Classes to manage multiple Subprocesses read their Output and Errors
# It forks the Main Process to execute the Sub Process Funcionality
#
#---------------------------------
# Requirements:
# - The Perl Package "perl-Data-Dump" must be installed
#
#---------------------------------
# Features:
# - Sub Process Execution Time Out
#
#==============================================================================
# The ChildProcessExecutable Package
#----------------------------------------------------------------------------
#Dependencies
#----------------------------------------------------------------------------
#Constructors
sub new {
my $invocant = shift;
my $class = ref($invocant) || $invocant;
my $self = undef;
#Set the Default Attributes and assign the initial Values
$self = {
"_method_execute" => undef,
"_report" => "",
"_error_message" => "",
"_error_code" => 0,
@_
};
#Bestow Objecthood
bless $self, $class;
$self->{"_method_execute"} = $self->getExecute;
#Give the Object back
return $self;
}
#----------------------------------------------------------------------------
#Administration Methods
sub setExecute {
my $self = shift;
my $refexe = shift;
if ( defined $refexe ) {
#Accept only Code References
if ( ref $refexe eq "CODE" ) {
$self->{"_method_execute"} = $refexe;
}
}
else #The Code Reference Parameter is undefined
{
$self->{"_method_execute"} = $refexe;
} #if(defined $refexe)
return $refexe;
}
sub Execute {
}
#----------------------------------------------------------------------------
#Consultation Methods
sub getExecute {
my $self = shift;
my $refexe = $self->{"_method_execute"};
unless ( defined $refexe ) {
$refexe = sub {
return $self->Execute;
};
} #unless(defined $refexe)
return $refexe;
}
sub getReportString {
my $self = shift;
return $self->{"_report"};
}
sub getErrorCode {
my $self = shift;
return $self->{"_error_code"};
}
sub getErrorString {
my $self = shift;
return $self->{"_error_message"};
}
return 1;