# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+use warnings;
use strict;
use Carp;
use Data::Dumper;
}
+void str_analyze_C( const char *string )
+{
+ /* Martin A. Hansen, July 2009 */
+
+ /* Scans a string incrementing the char count in an array. */
+
+ int count[ 256 ] = { 0 }; /* Integer array spanning the ASCII alphabet */
+ int i;
+
+ for ( i = 0; i < strlen( string ); i++ ) {
+ count[ ( int ) string[ i ] ]++;
+ }
+
+ Inline_Stack_Vars;
+ Inline_Stack_Reset;
+
+ for ( i = 0; i < 256; i++ ) {
+ Inline_Stack_Push( sv_2mortal( newSViv( count[ i ] ) ) );
+ }
+
+ Inline_Stack_Done;
+}
+
+
END_C
$file_max = length "File";
$line_max = length "Line";
- if ( $line =~ /^ at (.+) line (\d+)$/ )
+ if ( $line =~ /^ at (.+) line (\d+)\.?$/ )
{
$file = $1;
$line_no = $2;
}
-sub file_store
-{
- # Martin A. Hansen, December 2004.
-
- # writes a data structure to file.
-
- my ( $path, # full path to file
- $data, # data structure
- ) = @_;
-
- Storable::store( $data, $path ) or Maasha::Common::error( qq(Could not write-open file "$path": $!) );
-}
-
-
-sub file_retrieve
-{
- # Martin A. Hansen, December 2004.
-
- # retrieves hash data structure
- # (this routines needs to test if its a hash, array or else)
-
- my ( $path, # full path to data file
- ) = @_;
-
- my ( $data );
-
- $data = Storable::retrieve( $path ) or Maasha::Common::error( qq(Could not read-open file "$path": $!) );
-
- return wantarray ? %{ $data } : $data;
-}
-
-
sub read_args
{
# Martin A. Hansen, December 2006
}
+sub time_stamp_diff
+{
+ # Martin A. Hansen, June 2009.
+
+ # Return the difference between two time stamps in
+ # the time stamp format.
+
+ my ( $t0, # time stamp 0
+ $t1, # time stamp 1
+ ) = @_;
+
+ # Returns a time stamp string.
+
+ my ( $year0, $mon0, $day0, $hour0, $min0, $sec0,
+ $year1, $mon1, $day1, $hour1, $min1, $sec1,
+ $year, $mon, $day, $hour, $min, $sec );
+
+ $t0 =~ /(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/;
+ $year0 = $1;
+ $mon0 = $2;
+ $day0 = $3;
+ $hour0 = $4;
+ $min0 = $5;
+ $sec0 = $6;
+
+ $sec0 += $day0 * 24 * 60 * 60;
+ $sec0 += $hour0 * 60 * 60;;
+ $sec0 += $min0 * 60;
+
+ $t1 =~ /(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/;
+ $year1 = $1;
+ $mon1 = $2;
+ $day1 = $3;
+ $hour1 = $4;
+ $min1 = $5;
+ $sec1 = $6;
+
+ $sec1 += $day1 * 24 * 60 * 60;
+ $sec1 += $hour1 * 60 * 60;;
+ $sec1 += $min1 * 60;
+
+ $year = $year1 - $year0;
+ $mon = $mon1 - $mon0;
+ $day = $day1 - $day0;
+
+ $sec = $sec1 - $sec0;
+
+ $hour = int( $sec / ( 60 * 60 ) );
+ $sec -= $hour * 60 * 60;
+
+ $min = int( $sec / 60 );
+ $sec -= $min * 60;
+
+ return join( ":", sprintf( "%02d", $hour ), sprintf( "%02d", $min ), sprintf( "%02d", $sec ) );
+}
+
+
sub process_running
{
# Martin A. Hansen, July 2008.
}
+sub str_analyze
+{
+ # Martin A. Hansen, July 2009.
+
+ # Analyzes the string composition of a given string.
+
+ my ( $str, # string to analyze
+ ) = @_;
+
+ # Returns hash
+
+ my ( @composition, %hash, $i );
+
+ @composition = Maasha::Common::str_analyze_C( $str );
+
+ for ( $i = 32; $i <= 126; $i++ ) { # Only include printable chars
+ $hash{ chr $i } = $composition[ $i ]
+ }
+
+ return wantarray ? %hash : \%hash;
+}
+
+
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1;