use Getopt::Long; sub get_options { my $def = shift; my $cur = {}; $cur->{$_->[0]} = $_->[2] for @$def; my @def = map {$_->[0].$_->[1]} @$def; GetOptions( $cur, @def ); return $cur; } my $defaults = [ [ debug => '' => 0 ], [ help => '' => 0 ], [ interactive => '' => 0 ], [ host => '=s' => '999.999.999' ], [ username => '=s' => 'username' ], [ home => '=s' => $ENV{HOME} ], # ... ]; my $opt = get_options( $defaults ); # if ( $opt->{help} ) { ... } # foo( $opt->{host} ); #### sub debug { my $msg = shift; writeLog( $msg ) if $opt->{debug}; } sub timestamp { my $when = shift || time; my ( $sec, $min, ... ) = localtime( $when ); # ... return $stamp; } #### # ... my @k = ( 'Status', 'Time Stamp', 'Value', 'Error Message' ); my $h = $HoHoHoA{$line_number_being_processed}; $one_line_summary = $h->{shift(@k)} . 'No Error. '; $one_line_summary .= $h->{$_} . '. ' for @k; $one_line_summary .= "$j."; #### my @k = qw/ status time_stamp value error_message /;