lib SubOpt
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Summary
SubOpt - G-language Subroutine Input API
Package variables
Privates (from "my" definitions)
%data;
$opt_list = 0
Included modules
Carp
Inherit
Exporter
Synopsis
  use SubOpt;

  &odyssey ($gb, -option=>"neat!", -file=>"fancy.txt", "oops");

  sub odyssey{
      opt_default(option => 'none', file => 'hoge.txt');
      # Set default values. This is optional.

      my @args = opt_get(@_);
      # Parse options.

      my $gb = opt_as_gb(shift @args);
      # Get the input value as a G instance
 
      my $last = shift @args;

      print $gb->{SEQ} , "\n";
      print "last: $last\n";
      print "option: ", opt_val("option"), "\n";
      print "file: ", opt_val("file"), "\n";
      # Option values are accessed via opt_val().
  }
Description
  SubOpt parses the arguments given to a subroutine in a similar 
  manner as GetOpt module.

  Options are specified in the form: -option=>"hoge"
  The above will input the value "hoge" with a key "option".
  i.e. option with '-' is stored with the value pointed with '=>'.

  supported methods:

  opt_default(
Methods
opt_as_gb
No description
Code
opt_default
No description
Code
opt_get
No description
Code
opt_inputType
No description
Code
opt_val
No description
Code
set_opt_list
No description
Code
Methods description
None available.
Methods code
opt_as_gbdescriptionprevnextTop
sub opt_as_gb {
    return if ($opt_list);

    if ($#_ >= 1){
	croak("Error 1 in SubOpt::opt_as_gb():\n  Given value is not a valid sequence.\n");
	return '';
    }elsif (length $_[0] < 1){
	return lastInstance G::IO();
    }

    my $unknown = shift @_;
    my $ref =\$ unknown;
    my $ref2 = ref $unknown;

    if ($ref2 =~ /Bio::Seq/){
	return new G::IO($unknown, 'bioperl', 'no msg');
    }elsif ("$unknown" =~ /\=/){
	if (defined $unknown->{SEQ}){
	    return $unknown;
	}else{
	    croak("Error 3 in SubOpt::opt_as_gb():\n  Given value is not a valid sequence.\n");
	    return '';
	}
    } elsif (ref $unknown eq 'SCALAR') {
	my $new_gb = new G::IO('blessed');
	$new_gb->{SEQ} = lc($$unknown);
	return $new_gb;
    } elsif (ref $unknown eq 'REF') {
	my $new_gb = new G::IO('blessed');
	$new_gb->{SEQ} = lc($$unknown);
	return $new_gb;
    } elsif (ref $ref eq 'SCALAR'){
	if(-e $unknown){
	    return new G::IO($unknown, 'no msg');
	}elsif(length($unknown) < 25){
	    return new G::IO($unknown, 'no msg');
	}else{
	    my $new_gb = new G::IO('blessed');
	    $new_gb->{SEQ} = lc($unknown);
	    return $new_gb;
	}
    }else{
	croak("Error 4 in SubOpt::opt_as_gb():\n  Given value is not a valid sequence.\n");
	return '';
    }
}
opt_defaultdescriptionprevnextTop
sub opt_default {
    %data = (@_);

    croak if ($opt_list);
}
opt_getdescriptionprevnextTop
sub opt_get {
    my @args = @_;
    my @new_args = ();
    my $i = 0;
    my @bparray = ();

    while(defined $args[$i]){
	if (substr($args[$i], 0, 1) eq '-' && substr($args[$i], 1, 1) !~ /[0-9]/){
	    if(!defined($args[$i + 1]) || substr($args[$i + 1], 0, 1) eq '-' && substr($args[$i + 1], 1, 1) !~ /[0-9]/){
		$data{substr($args[$i], 1)} = 1;
		$i ++;
	    }else{
		$data{substr($args[$i],1)} = $args[$i + 1];
		$i += 2;
	    }
        }else{
	    my $ref = ref $args[$i];
	    if ($ref =~ /Bio::Seq/){
		push(@new_args, new G::IO($args[$i], "bioperl", "no msg"));
	    }else{
		push(@new_args, $args[$i]);
	    }
	    $i ++;
	}
    }

    mkdir ("data",  0777) if($data{'output'} eq 'f');;
    mkdir ("graph", 0777) if($data{'output'} =~ /g/ || $data{'output'} eq 'show');

    return @new_args;
}
opt_inputTypedescriptionprevnextTop
sub opt_inputType {
}
opt_valdescriptionprevnextTop
sub opt_val {
    my $key = shift;

    if(length($key)){
	return $data{$key};
    }else{
	return %data;
    }
}
set_opt_listdescriptionprevnextTop
sub set_opt_list {
    $opt_list = shift;
}
General documentation
AUTHORTop
  Kazuharu Arakawa, gaou@sfc.keio.ac.jp
SEE ALSOTop
perl(1).