# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+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
$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;
$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;
- $hour = $hour1 - $hour0;
- $min = $min1 - $min0;
- $sec = $sec1 - $sec0;
- #return "$year-$mon-$day $hour:$min:$sec";
+ $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 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;