/usr/share/perl5/FCM1/Timer.pm is in fcm 2016.12.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | # ------------------------------------------------------------------------------
# (C) British Crown Copyright 2006-16 Met Office.
#
# This file is part of FCM, tools for managing and building source code.
#
# FCM is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# FCM is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with FCM. If not, see <http://www.gnu.org/licenses/>.
# ------------------------------------------------------------------------------
# NAME
# FCM1::Timer
#
# DESCRIPTION
# This is a package of timer utility used by the FCM command.
#
# ------------------------------------------------------------------------------
package FCM1::Timer;
# Standard pragma
use warnings;
use strict;
# Exports
our (@ISA, @EXPORT, @EXPORT_OK);
sub timestamp_command;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(timestamp_command);
# ------------------------------------------------------------------------------
# Module level variables
my %cmd_start_time = (); # Command start time, (key = command, value = time)
# ------------------------------------------------------------------------------
# SYNOPSIS
# $string = &FCM1::Timer::timestamp_command ($command[, $status]);
#
# DESCRIPTION
# This function returns a string adding to $command a prefix according the
# value of $status. If $status is not specified or does not match the word
# "end", the status is assumed to be "start". At "start", the prefix will
# contain the current timestamp. If $status is the word "end", the prefix
# will contain the total time taken since this function was called with the
# same $command at the "start" status.
# ------------------------------------------------------------------------------
sub timestamp_command {
(my $command, my $status) = @_;
my $prefix;
if ($status and $status =~ /end/i) {
# Status is "end", insert time taken
my $lapse = time () - $cmd_start_time{$command};
$prefix = sprintf "# Time taken: %12d s=> ", $lapse;
} else {
# Status is "start", insert time stamp
$cmd_start_time{$command} = time;
(my $sec, my $min, my $hour, my $mday, my $mon, my $year) = localtime;
$prefix = sprintf "# Start: %04d-%02d-%02d %02d:%02d:%02d=> ",
$year + 1900, $mon + 1, $mday, $hour, $min, $sec;
}
return $prefix . $command . "\n";
}
# ------------------------------------------------------------------------------
1;
__END__
|