189 lines
4.7 KiB
Perl
189 lines
4.7 KiB
Perl
#!/usr/bin/perl -w
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Harvard University Atmospheric Chemistry Modeling Group !
|
|
#------------------------------------------------------------------------------
|
|
#BOP
|
|
#
|
|
# !MODULE: StrTrim
|
|
#
|
|
# !DESCRIPTION: This Perl package contains routines for splitting a line
|
|
# into substrings and removing trailing and leading whitespace. Used by
|
|
# the ncCode* scripts.
|
|
#\\
|
|
#\\
|
|
# !INTERFACE:
|
|
#
|
|
package StrTrim;
|
|
#
|
|
# !USES:
|
|
#
|
|
require 5.003; # Need this version of Perl or newer
|
|
use English; # Use English language
|
|
use Carp; # Get detailed error messages
|
|
use strict; # Force explicit variable declarations (like IMPLICIT NONE)
|
|
#
|
|
#
|
|
# !PUBLIC MEMBER FUNCTIONS:
|
|
# &trim($)
|
|
# &splitLine($$)
|
|
#
|
|
# !CALLING SEQUENCE:
|
|
# use StrTrim qw( trim splitLine extractFile );
|
|
#
|
|
# !REVISION HISTORY:
|
|
# 30 Jan 2012 - R. Yantosca - Initial version
|
|
# 26 Mar 2012 - R. Yantosca - Add function &extractFile
|
|
#EOP
|
|
#------------------------------------------------------------------------------
|
|
#BOC
|
|
BEGIN {
|
|
|
|
#=========================================================================
|
|
# The BEGIN method lists the names to export to the calling routine
|
|
#=========================================================================
|
|
use Exporter ();
|
|
use vars qw( $VERSION @ISA @EXPORT_OK );
|
|
|
|
$VERSION = 1.00; # version number
|
|
@ISA = qw( Exporter ); # export method
|
|
@EXPORT_OK = qw( &trim &splitLine &extractFile );
|
|
}
|
|
#EOC
|
|
#------------------------------------------------------------------------------
|
|
# Harvard University Atmospheric Chemistry Modeling Group !
|
|
#------------------------------------------------------------------------------
|
|
#BOP
|
|
#
|
|
# !IROUTINE: trim
|
|
#
|
|
# !DESCRIPTION: Routine trim removes leading and trailing whitespace from
|
|
# a string (analogous to IDL's Strtrim( str, 2 ) command).
|
|
#\\
|
|
#\\
|
|
# !INTERFACE:
|
|
#
|
|
sub trim($) {
|
|
#
|
|
# !CALLING SEQUENCE:
|
|
# $string = &trim( $string );
|
|
#
|
|
# !REMARKS:
|
|
# Found online at this URL:
|
|
# http://www.somacon.com/p114.php
|
|
#
|
|
# !REVISION HISTORY:
|
|
# 27 Jan 2012 - R. Yantosca - Initial version
|
|
#EOP
|
|
#------------------------------------------------------------------------------
|
|
#BOC
|
|
|
|
# Shift the @_ array
|
|
my $string = shift;
|
|
|
|
# Remove leading whitespace
|
|
$string =~ s/^\s+//;
|
|
|
|
# Remove trailing whitespace
|
|
$string =~ s/\s+$//;
|
|
|
|
# Return
|
|
return( $string );
|
|
}
|
|
#EOP
|
|
#------------------------------------------------------------------------------
|
|
# Harvard University Atmospheric Chemistry Modeling Group !
|
|
#------------------------------------------------------------------------------
|
|
#BOP
|
|
#
|
|
# !IROUTINE: splitLine
|
|
#
|
|
# !DESCRIPTION: Routine splitLine splits a line on a given delimiter, and
|
|
# strips white space. Convenience wrapper for the Perl "split" function.
|
|
#\\
|
|
#\\
|
|
# !INTERFACE:
|
|
#
|
|
sub splitLine($$) {
|
|
#
|
|
# !INPUT PARAMETERS:
|
|
#
|
|
# Line to be split, and the delimeter character
|
|
# Don't strip the white from $value if $noSplitVal==1
|
|
my( $line, $delim ) = @_;
|
|
#
|
|
# !CALLING SEQUENCE:
|
|
# ( $name, $value ) = &splitLine( $line );
|
|
#
|
|
# !REVISION HISTORY:
|
|
# 27 Jan 2012 - R. Yantosca - Initial version
|
|
#EOP
|
|
#------------------------------------------------------------------------------
|
|
#BOC
|
|
#
|
|
# !LOCAL VARIABLES:
|
|
#
|
|
# Split the line
|
|
my @subStr = split( $delim, $line );
|
|
my $name = &trim( $subStr[0] );
|
|
my $value = &trim( $subStr[1] );
|
|
|
|
# Return substrings
|
|
return( $name, $value );
|
|
}
|
|
#EOP
|
|
#------------------------------------------------------------------------------
|
|
# Harvard University Atmospheric Chemistry Modeling Group !
|
|
#------------------------------------------------------------------------------
|
|
#BOP
|
|
#
|
|
# !IROUTINE: extractFile
|
|
#
|
|
# !DESCRIPTION: Routine extractFile splits a full Unix path name into a
|
|
# directory string and a file name.
|
|
#\\
|
|
#\\
|
|
# !INTERFACE:
|
|
#
|
|
sub extractFile($) {
|
|
#
|
|
# !INPUT PARAMETERS:
|
|
#
|
|
# Full Unix path name
|
|
my( $path ) = @_;
|
|
#
|
|
# !CALLING SEQUENCE:
|
|
# ( $file, $dir ) = &extractFile( $path );
|
|
#
|
|
# !REVISION HISTORY:
|
|
# 26 Mar 2012 - R. Yantosca - Initial version
|
|
#EOP
|
|
#------------------------------------------------------------------------------
|
|
#BOC
|
|
#
|
|
# !LOCAL VARIABLES:
|
|
#
|
|
my $pos = -1;
|
|
my $lastPos = -1;
|
|
my $dir = "";
|
|
my $file = "";
|
|
|
|
# Search for the last "/" character in the file path
|
|
# This is the place where to split the file & directory
|
|
while ( ( $pos = index( $path, '/', $pos ) ) > -1 ) {
|
|
$lastPos = $pos;
|
|
$pos++;
|
|
}
|
|
|
|
# Directory part of the path
|
|
$dir = substr( $path, 0, $lastPos+1 );
|
|
|
|
# Filename part of the path
|
|
$file = substr( $path, $lastPos+1, length( $path ) - $lastPos );
|
|
|
|
# Return substrings
|
|
return( $file, $dir );
|
|
}
|
|
#EOC
|
|
END {}
|