-
Notifications
You must be signed in to change notification settings - Fork 0
/
dt_utils.pm
104 lines (76 loc) · 2.47 KB
/
dt_utils.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/perl
# library used for general-purpose utility routines, which are not specific
# for testing.
use warnings;
use strict;
# Module variables ######################################################
my @dt_utils_MONTHS = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
# Subroutines ###########################################################3
# returns the current time in printable 'HH MM SS' format,
# separated by the specified separator
sub dt_utils_format_now {
my $sep = $_[0];
my ($time) = time();
my ($sec, $min, $hour, $day_of_month, $month, $year) = localtime($time);
my ($time_formated) = sprintf("%d$sep$day_of_month$sep%s$sep%2.2d$sep%2.2d$sep%2.2d",
$year + 1900, $dt_utils_MONTHS[$month],
$hour, $min, $sec);
return $time_formated;
}
sub dt_utils_format_elapsed_time {
my ($time) = $_[0];
my ($time_hour) = int($time / 3600);
my ($time_min) = int(($time - $time_hour * 3600) / 60);
my ($time_sec) = $time - $time_hour * 3600 - $time_min * 60;
my ($time_formated) = sprintf("%2.2d:%2.2d:%2.2d",
$time_hour, $time_min, $time_sec);
return $time_formated;
}
# prints a message or a list of messages to STDOUT, with a time-stamp prefix,
# and flushes it on-the-spot..
sub dt_utils_print {
my (@msgs) = @_;
my ($now) = dt_utils_format_now(":");
my ($former_flush) = $|;
$| = 1; # Setting this to non-zero, forces flush right away
print "[$now] ", @msgs;
$| = $former_flush;
}
sub dt_utils_print_no_time {
my (@msgs) = @_;
my ($former_flush) = $|;
$| = 1; # Setting this to non-zero, forces flush right away
print @msgs;
$| = $former_flush;
}
sub dt_utils_print_error {
my (@msgs) = @_;
my ($now) = dt_utils_format_now(":");
my ($former_flush) = $|;
$| = 1; # Setting this to non-zero, forces flush right away
print STDERR "[$now] ERROR: ", @msgs;
$| = $former_flush;
}
# Removes trailing and leading whitespaces (including trailing newline)
# from the supplied string.
# @return the trimmed string
sub dt_utils_trim {
my $str = $_[0];
# Quite a clever match pattern, don't you think?
if ($str =~ /^\s*(\S.*?)\s*$/) {
return $1;
}
return ''; # Empty string
}
sub dt_are_all_defined {
my @params = @_;
my $param_i = 0;
for ($param_i = 0; $param_i < scalar(@params); ++$param_i) {
if (!defined($params[$param_i])) {
return;
}
}
return 1;
}
# must return '1', since this file is being 'use'-ed.
1;