App-SeismicUnixGui

 view release on metacpan or  search on metacpan

lib/App/SeismicUnixGui/misc/oop_prog_params.pm  view on Meta::CPAN

use aliased 'App::SeismicUnixGui::misc::param_sunix';
use App::SeismicUnixGui::misc::control '0.0.3';
use aliased 'App::SeismicUnixGui::misc::control';
use aliased 'App::SeismicUnixGui::misc::L_SU_path';

=head2 Instantiation

=cut

my $L_SU_path = L_SU_path->new();

=head2 program parameters
	 
  private hash
  
=cut

my $oop_prog_params = {
	_label             => '',
	_prog_name         => '',
	_prog_version      => '',
	_param_labels_aref => '',
	_param_values_aref => '',
};

=head2 sub _get_prefix_aref

	obstain prefix values externally for the module
	MUST first use prefix_aref method to 
	set prefixes internally 
	
	use program_name_spec.pm
	bring in a different module 
	each program
	prefix rules are in *_spec.pm
	prefixes can include a directory path e.g.,
	
=cut

sub _get_prefix_aref {

	my ($self) = @_;

	if ( $oop_prog_params->{_prog_name} ) {

		#		my $L_SU_global_constants = L_SU_global_constants->new();
		my $program_name = $oop_prog_params->{_prog_name};

		$L_SU_path->set_program_name($program_name);

		my $pathNmodule_spec_w_slash_pm =
		  $L_SU_path->get_pathNmodule_spec_w_slash_pm();
		my $pathNmodule_spec_w_colon =
		  $L_SU_path->get_pathNmodule_spec_w_colon();

		require $pathNmodule_spec_w_slash_pm;

		# INSTANTIATE
		my $package = $pathNmodule_spec_w_colon->new();

		$package->binding_index_aref();
		$package->prefix_aref();
		my $prefix_aref = $package->get_prefix_aref();

	# print("oop_prog_params,_get_prefix_aref, prefix_aref=@{$prefix_aref} \n");

		return ($prefix_aref);

	}
	else {
		print("oop_prog_params,_get_prefix, missing program name\n");
	}

	return ();

}

=head2 sub _get_suffix_aref

	use program_name_spec.pm
	to bring in a different module 
	for each program
	suffix rules are in *_spec.pm
	
	bring in suffixes, if they exist
	
=cut

sub _get_suffix_aref {

	my ($self) = @_;

	if ( $oop_prog_params->{_prog_name} ) {

		my $program_name = $oop_prog_params->{_prog_name};

		$L_SU_path->set_program_name($program_name);

		my $pathNmodule_spec_w_slash_pm =
		  $L_SU_path->get_pathNmodule_spec_w_slash_pm();
		my $pathNmodule_spec_w_colon =
		  $L_SU_path->get_pathNmodule_spec_w_colon();

		require $pathNmodule_spec_w_slash_pm;

		# INSTANTIATE
		my $package = $pathNmodule_spec_w_colon->new();

		# set internally and get suffix values externally for the module
		$package->binding_index_aref();
		$package->suffix_aref();
		my $suffix_aref = $package->get_suffix_aref();

  #		print("oop_prog_params,_get_suffix_aref, suffixes are: @{$suffix_aref}\n");
		return ($suffix_aref);

	}
	else {
		print("oop_prog_params,_get_suffix, missing program name\n");
	}

	return ();

}

=head2 sub _get_prefix_for_a_label 

To place a prefix in front of a sunix parameter
for o/p to a perl flow

=cut

sub _get_prefix_for_a_label {

	my ($self) = @_;

	my $param_sunix = param_sunix->new();
	my $control     = control->new();

	my $prefix = '';
	my @all_program_labels;
	my $labels_aref;
	my @prefixes;

	# The following must exist
	my @all_prog_prefixes = @{ _get_prefix_aref() };
	my $label             = $oop_prog_params->{_label};
	my $program_name      = $oop_prog_params->{_prog_name};

	# find all the possible names/labels for this program
	$param_sunix->set_program_name( \$program_name );
	$labels_aref        = $param_sunix->get_names();
	@all_program_labels = @$labels_aref;

	# number of all possible labels
	my $length = $param_sunix->get_length4perl_flow();

# print("2. oop_prog_params,_get_prefix_for_label, prefix length: $length\n");
# print(
# 	"2. oop_prog_params,_get_prefix_for_label, prefix labels: @all_program_labels\n"
# );

	# what's the index in the configuration file
	# (not the o/p perl script)
	# when label names match?
	for ( my $i = 0 ; $i < $length ; $i++ ) {

		# both labels should contain SOMETHING
		if ( $label && $all_program_labels[$i] ) {



( run in 0.581 second using v1.01-cache-2.11-cpan-2398b32b56e )